반응형
programmers.co.kr/learn/courses/30/lessons/60063
Level 3으로 책정된 이유는 아마
복잡한 알고리즘을 쓰는 게 아니라 조건 잘 체크해서 구현하는 문제이기 때문인 것 같다.
작년에 시험볼 때 카카오 문제가 어렵게 느껴졌던 이유는, 시험장에서 제한된 시간 안에 이만큼 구현하는 게 정말 어려웠기 때문이었다.
심지어 시험중일 때에는, 이걸 여유롭게 고민할 마음의 여유도 없었다. 이 문제만 유달리 어려웠던 것도 아니고...
Python으로 풀 때 내가 사용한 방법은
1. 이미 확인한 비행기 좌표는 set으로 저장한다.
2. 비행기 좌표는 tuple을 사용했고, 튜플 내의 좌표값은 정렬했다. 예컨대 ( (0,0),(1,0) ) 비행기와 ( (1,0),(0,0) ) 비행기는 튜플 자료구조상으로는 다른 객체이지만, 같은 값으로 취급해야 하기 때문이다.
비행기 좌표 저장에 set 자료구조를 사용하기로 했으므로, 좌표값도 튜플로 저장할 수밖에 없었다.
- 튜플 값을 리스트로 변경하고 ( [왼쪽 좌표, 오른쪽 좌표] 형태로 재정의)
- sorted()로 리스트를 정렬한다. 정렬 우선순위로는 y좌표 1순위, x좌표 2순위로 두었다.
- 정렬된 리스트를 다시 튜플로 변환한다.
3. 비행기의 형태 (가로 형태 / 세로 형태)와 회전 기준좌표에 따라 회전방법이 다르다.
- 비행기가 가로일 경우
회전축에 사용할 좌표를 정하고, 나머지 좌표를 기준으로 y값의 위 / 아래가 0이면 회전할 수 있다. - 비행기가 세로일 경우
회전축에 사용할 좌표를 정하고, 나머지 좌표를 기준으로 x값의 위 / 아래가 0이면 회전할 수 있다.
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] 프로그래머스. 삼각 달팽이 (Level 2) (0) | 2020.09.23 |
---|---|
[Python] 백준 2156. 포도주 시식 (0) | 2020.09.11 |
[Python] 프로그래머스. 최적의 행렬 곱셈 (Level 4) (0) | 2020.09.03 |
[Python] 프로그래머스. 2020 카카오 인턴 - 경주로 건설 (Level 3) (0) | 2020.09.02 |
[Python] 프로그래머스. 2020 카카오 인턴 - 수식 최대화 (Level 2) (0) | 2020.09.01 |