티스토리 뷰
1. 문제
programmers.co.kr/learn/courses/30/lessons/42862
코딩테스트 연습 - 체육복
점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번
programmers.co.kr
2. 소스코드 (Python3)
def solution(n, lost, reserve): answer = 0 student = {} for x in lost: student[x] = student.get(x, 1) -1 for x in reserve: student[x] = student.get(x, 1) +1 lost = [k for k,v in student.items() if v == 0] reserve = [k for k,v in student.items() if v == 2] for x in lost: if x-1 in reserve: reserve.remove(x-1) answer += 1 elif x+1 in reserve: reserve.remove(x+1) answer += 1 if not reserve: break
return n - len(lost) + answer |
3. 고찰
1) 시간복잡도
lost에 대해 for loop -> O(N)
reserve에 대해 for loop -> O(N)
lost를 다시 만들면서 student.items() -> O(N)
reserve를 다시 만들면서 student.items() -> O(N)
lost에 대해 for loop -> O(N)
따라서 시간 복잡도는 O(5*N) => O(N) 이다.
'프로그래밍 > Python' 카테고리의 다른 글
프로그래머스 - 큰 수 만들기 (0) | 2020.12.03 |
---|---|
프로그래머스 - 가장 큰 수 (0) | 2020.12.03 |
프로그래머스 - 완주하지 못한 선수 (0) | 2020.12.03 |
프로그래머스_문자열 압축 (0) | 2020.11.04 |
프로그래머스_H-Index (0) | 2020.11.03 |
- Total
- Today
- Yesterday
- Publisher
- python3
- Ubuntu20.04
- vue/cli
- 원격 통신
- Mount
- ROS
- 백준알고리즘
- HC-SR04
- Python
- VMware
- 8자주행
- filesystem
- subscriber
- 포트인식문제
- set backspace
- roslaunch
- 초음파센서
- 아두이노 IDE
- 코드리뷰
- C++
- Ubuntu16.04
- 우분투
- umount
- 윈도우
- sensehat
- 프로그래머스
- VirtualBox
- 윈도우 복구
- 리눅스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |