728x90
반응형
코딩테스트 문제 푸는 방향
1. 문제를 정독한다. 정독하면서 손으로 한 번 풀어본다.
2. 접근 방법을 구상한다.
3. 핵심 코드를 시각적으로 보이도록 손코딩한다.
4. 코드를 구현한다.
5. 디버깅 및 개선을 한다.
6. 부분 정답이 나올 시 1번으로 돌아가 더 꼼꼼하게 읽어보고 다른 접근 방법은 없는지 생각해본다.
1208. [S/W 문제해결 기본] 1일차 - Flatten
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
평탄화 작업에 제한이 걸려있을 때 최고점과 최저점의 차이를 출력하면 된다.
맨 처음 이런 식으로 상자가 쌓여있다.
첫 번째 평탄화 작업으로 제일 높은 상자가 쌓여있는 A에서 한 개를 빼 B로 옮겨준다.
두 번째 평탄화 작업으로는 가장 높은 상자가 쌓여있는 A에서 가장 적은 상자가 쌓여있는 C로 옮겨주면 된다.
[제약 사항]
1. 가로 길이는 항상 100
2. 테스트 케이스는 항상 10
3. 덤프 횟수는 1이상 1000이하
4. 모든 상자의 높이는 1이상 100이하
5. 주어진 덤프 횟수 이내 평탄화가 완료되면 더 이상 덤프를 수행할 수 없으므로 그 때의 최고점과 최저점의 높이 차를 반환한다.
[문제 해결 방향]
for문으로 덤프 횟수동안 최고 숫자는 -1을 해주고 최저 숫자는 +1을 해주면 될 것 같다.
그리고 if문으로 덤프 횟수 이내에 완료되면 for문을 빠져나가도록 설정해준다.
[파이썬 코드]
T = 10
for test_case in range(1, T+1):
N = int(input()) # 덤프횟수
box = list(map(int,input().split())) # 100개의 상자 높이들을 입력받음
for i in range(N):
max_box = max(box)
max_index = box.index(max(box))
box[max_index] = max_box - 1
min_box = min(box)
min_index = box.index(min(box))
box[min_index] = min_box + 1
if max(box) - min(box) <= 1:
break
else:
continue
print('#{} {}'.format(test_case,max(box)-min(box)))
[느낀점]
점점,, ,발전하는 너낌쓰?
고등학교때 수학문제 풀었던 느낌이 난다ㅏ재미쓰~~
728x90
반응형
'코딩테스트 > SWEA' 카테고리의 다른 글
[SW Expert Academy][D3][python] 1216. [S/W 문제해결 기본] 3일차 - 회문2 (0) | 2023.05.19 |
---|---|
[SW Expert Academy][D3][python] 1215. [S/W 문제해결 기본] 3일차 - 회문1 (1) | 2023.05.19 |
[SW Expert Academy][D3][python] 1209.[S/W 문제해결 기본] 2일차 - SUM (0) | 2023.05.17 |
[SW Expert Academy][D3][python] 16910. 원 안의 점 (0) | 2023.05.16 |
[SW Expert Academy][D2][python]1961. 숫자 배열 회전 join (0) | 2023.05.13 |