티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/178871?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 자연수의 집합이자 길이가 같은 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한 값의 누적이 최소가 되는 값 리턴
내 답안
def solution(players, callings):
for i in range(len(callings)):
if callings[i] in players:
num = players.index(callings[i])
players[num], players[num-1] = players[num-1], players[num]
return players
위 코드로는 8~16번 예시에서 시간 복잡도 초과로 오류가 난다. list에서 value로 index에 바로 접근할 수 없으니까 .index를 활용한 것이 시간복잡도를 무지하게 늘린 모양이었다.
이 문제를 해결하기 위해서는 map 함수 등을 활용해볼 수 있겠는데, 나는 enumerate와 dict를 활용해서 등수, 이름을 따로 하나의 dict에 저장하고 거기로 접근하는 방법을 이용했다.
다시 풀어본 답안
def solution(players, callings):
rank = dict()
for i, v in enumerate(players):
rank[v] = i
for p in callings:
pre, post = rank[p] - 1, rank[p]
rank[players[pre]] = post
rank[players[post]] = pre
players[pre], players[post] = players[post], players[pre]
return players
dict 자료형에서는 value 값으로 index에 접근할 수 있으므로, pre와 post 변수에 각각의 index를 저장해준다.
그러면 list인 players의 value도 pre, post에 저장된 index로 호출할 수 있게 된다.
'공부 > Python' 카테고리의 다른 글
프로그래머스 Lv2. 최솟값 만들기 (0) | 2023.06.11 |
---|---|
프로그래머스 Lv1. 두 정수 사이의 합 (0) | 2023.03.04 |
프로그래머스 Lv1. 정수 제곱근 판별 (0) | 2023.02.28 |
프로그래머스 Lv1. x만큼 간격이 있는 n개의 숫자 (0) | 2023.02.28 |
프로그래머스 Lv2. 올바른 괄호 (0) | 2023.02.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 빅데이터
- 취업준비
- Til
- Notion2Tistory
- Kaggle
- 데이터과학
- 자격증
- 데이터준전문가합격후기
- 커리어코칭
- github
- 이자포스터디
- todayIlearned
- 이력서
- ADsP
- 빅분기합격
- 빅데이터분석기사
- 빅분기후기
- 코드스테이츠
- 개발자포트폴리오
- 데이터준전문가
- ADsP합격후기
- 자버
- 깃허브
- 데이터분석
- 인공지능
- googlecolab
- 코테공부
- 빅분기
- data annotation
- ai부트캠프
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함