Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- bfs
- 너비 우선 탐색
- 자바스크립트
- 티스토리챌린지
- Lv. 2
- join
- 파이썬
- Java
- group by
- 소프티어
- softeer
- Baekjoon
- LEVEL 2
- level 3
- 프로그래머스
- 동적계획법
- SQL
- 오블완
- DP
- 깊이 우선 탐색
- Python
- Lv. 1
- dfs
- Lv. 3
- programmers
- javascript
- Lv. 0
- SQL 고득점 KIT
- Dynamic Programming
- 백준
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
Softeer Level 3 사물인식 최소 면적 산출 프로그램 Python 본문
728x90
문제 링크
https://softeer.ai/practice/6277
Softeer - 현대자동차그룹 SW인재확보플랫폼
현대자동차그룹에 입사한 당신은 레이더 기술을 활용해 차량 주변의 장애물과 사물을 인식하는 프로그램을 만드는 업무를 담당하고 있다. 당신은 다양한 입력 값들로 인식된 사물에 대해 최소
softeer.ai
정답 코드
import sys
sys.setrecursionlimit(10**9)
input = sys.stdin.readline
N, K = map(int, input().split())
def newDfs(S, maxX, minX, maxY, minY):
global minSize
if S == K+1:
nowSize = (maxX - minX) * (maxY - minY)
if nowSize < minSize:
minSize = nowSize
return
for nextX, nextY in stackK[S]:
newMaxX = max(maxX, nextX)
newMinX = min(minX, nextX)
newMaxY = max(maxY, nextY)
newMinY = min(minY, nextY)
newSize = (newMaxX - newMinX) * (newMaxY - newMinY)
if newSize < minSize:
newDfs(S+1, newMaxX, newMinX, newMaxY, newMinY)
minSize = 4000000
stackK = [[] for _ in range(K+1)]
for _ in range(N):
x, y, color = map(int, input().split())
stackK[color].append((x, y))
for x, y in stackK[1]:
newDfs(2, x, x, y, y)
print(minSize)
풀이 방법
- 백트래킹이라고 볼 수 있다.
- 1부터 K까지의 점을 찾아가는 여정이다.
- 각각 한 번씩 지나면서 마지막 K에 도달하면 값을 추출한다.
- 시간초과를 벗어나자.
- 이 부분이 백트래킹이라고 봐야할 것 같다.
- newSize를 측정한다.
- 이 부분에서 minSize보다 크면 어차피 그 뒤에도 계산할 필요가 없다.
느낀점
- 어려운 문제는 아니지만 일단 시간초과를 어떻게 벗어날지 생각해야 했다.
- 내가 오래 걸려서 풀었길래 더 좋은 방법이 있나 싶어서 다른 사람들 코드를 봤는데 똑같았다.
- 문제를 잘 읽자. 이미 풀었는데 K개의 색깔이 있다는 말을 K가 3일 경우 {1, 9, 20}도 된다는 말로 착각했다.
- 28번 시도 끝에 드디어 성공했다. 몇 번 시도하는 것이 뭐가 중요하냐 풀었다는 것이 중요하지라고 위안 삼았다.
728x90
'알고리즘' 카테고리의 다른 글
프로그래머스 Lv3 이중우선순위큐 Python (0) | 2023.12.27 |
---|---|
Softeer Level 3 안전운전을 도와줄 차세대 지능형 교통시스템 Python (1) | 2023.12.17 |
Softeer Level 3 교차로 Python (0) | 2023.12.14 |
Softeer Level 3 업무 처리 Python (1) | 2023.12.12 |
프로그래머스 Lv2 튜플 Python (2) | 2023.12.11 |