반응형
🗓️ 문제 설명
- 길이가 같은 두 개의 큐가 주어질 때, 하나의 큐를 골라 원소를 추출하고 추출된 원소를 다른 큐에 집어넣는 작업을 통해 두 큐의 원소 합을 같게 만들려고 합니다.
- 두 큐의 원소 합을 같게 만드는 작업의 최소 횟수를 구하고자 합니다.
- 한 번의 추출작업(pop)과 한 번의 집어넣는 작업(insert)를 합쳐서 작업을 1회 수행한 것으로 간주합니다.
- 만일 어떤 방법으로도 각 큐의 원소 합을 같게 만들 수 없는 경우, -1을 반환합니다.
- 제한 사항
- 1 ≤ queue1의 길이 = queue2의 길이 ≤ 300000
- 1 ≤ queue1의 원소, queue2의 원소 ≤ 10⁹
- 주의 : 언어에 따라 합 계산 과정 중 산술 오버플로우 발생 가능성이 있으므로 long type 고려가 필요합니다.
- 입출력 예시
queue1 | queue2 | result |
[3, 2, 7, 2] | [4, 6, 5, 1] | 2 |
[1, 2, 1, 2] | [1, 10, 1, 2] | 7 |
[1, 1] | [1, 5] | -1 |
💻 코드
최종 코드
- 3차 시도 이후 수정 사항
- 시간 복잡도를 줄이기 위해 최대 반복횟수인 "max_length *2" 를 "len(queue1) * 8"로 변경
- 두 번째 조건문에서 sum이 중복으로 사용되는 것을 막기위해 처음에 구한 q1, q2에 추출된 원소를 더하는 방식으로 변경
코드 풀이
⚙️ 시행착오
1차 시도
더보기

- 테스트 결과
>> 테스트 1번 실패
>> 테스트 11, 12, 15, 19, 20, 21, 22, 23, 24, 28, 30 번 시간 초과

2차 시도
더보기

- 1차 시도 이후 수정사항 : while 반복문에서 for 반복문으로 변경
- 테스트 결과
>> 테스트 11, 12, 15, 19, 20, 21, 22, 23, 24, 28, 30 번 시간 초과

3차 시도
더보기

- 2차 시도 이후 수정 사항 : 리스트를 deque로 변경, pop을 popleft로 insert를 append로 변경
- 테스트 결과
>> 테스트 11, 12, 15, 19, 20, 21, 22, 23, 24, 28, 30 번 시간 초과

알게된 점
더보기
- 수행시간을 줄이기 위해서는 list보다는 deque를 사용
- 불필요한 연산 또는 함수가 추가되어 수행시간을 늘리지 않았는지 확인
반응형
'코딩문제풀이 > 파이썬' 카테고리의 다른 글
[프로그래머스] 명예의 전당 1 (파이썬) (0) | 2023.02.19 |
---|---|
[프로그래머스] 숨어있는 숫자의 덧셈 1 (파이썬) (0) | 2023.02.19 |
[프로그래머스] 문자 반복 출력하기(파이썬) (0) | 2023.02.18 |
[프로그래머스] 폰켓몬(파이썬) (0) | 2023.02.18 |
[프로그래머스] 크기가 작은 부분 문자열(파이썬) (0) | 2023.02.17 |