우당탕탕 개발일지
[반복문] Softeer level 2 연탄의 크기 (Python 파이썬) 본문
💡문제 링크
💡문제 분석 요약
산타가 연탄을 모든 집에 배달하려고 하는데, 난로의 크기가 문제다.
난로의 반지름이 연탄의 반지름의 배수여야 그 집에 연탄을 배달할 수 있다.
최대한 많은 집에 연탄을 배달하고자 한다. 연탄을 배달할 수 있는 집 개수의 최댓값을 구하는 문제.
<입력값>
n: 집의 개수(1 <= n <= 100)stove: 각 집의 난로의 반지름에 대한 정보(2 <= 반지름 <= 100)<출력값>
연탄을 배달할 수 있는 집 개수의 최댓값
💡알고리즘 설계
1.
💡코드
💡 오답 풀이
1. 정렬을 안 했다.
import sys
n = int(input())
stove = list(map(int, input().split()))
answer = []
for r in range(stove[0], stove[-1] + 1):
a = 0
for s in stove:
if s % r == 0:
a += 1
answer.append(a)
print(max(answer))
맨 처음에 제출했던 풀이. 예시로 제시된 데이터에는 난로의 반지름 정보가 오름차순으로 정렬되어있어서 몰랐는데,
'정렬되어 있다'는 조건이 없다. 그래서 sort()로 정렬해줘야한다.
2. 반복문의 범위
sort()를 넣었는데, 딱 한가지 케이스만 오답이었다. 도대체 뭐가 문제지..계속 삽질했다. 결국 다른사람의 풀이를 슬쩍 봤는데 반복문의 범위가 range(2, 101)이었다.
나는 연탄 반지름의 최소크기를 난로 반지름의 최솟값이라고 생각했는데, 2일 수도 있다는 걸 놓쳤다.
예를 들어, 난로의 반지름이 4, 6, 10이라면 이전코드(난로 반지름의 최솟값)의 결괏값은 1이고, 반복문의 범위를 range(2, 101)로 하면 3이다.
💡 느낀점 or 기억할정보
1. 반복문의 범위를 잘 설정하자!
2. 예시 데이터만 보고 조건을 놓치지 말자.
3. 실제 코테에서는 여러 케이스 중 몇 개가 오답인지 볼 수 없을테니 내 코드가 모든 데이터의 경우에 잘 작동하는지 보기 어렵겠다.. 극단적인 케이스를 스스로 떠올리며, 그것까지 고려하면서 코드를 짜야한다..
'알고리즘' 카테고리의 다른 글
[해싱] Softeer level 3 성적 평균 (Python 파이썬)(반올림, 소수점) (1) | 2024.03.15 |
---|---|
[반복문/인덱싱/대문자] Softeer level 2[한양대 HCPC 2023] X marks the Spot(Python 파이썬) (1) | 2024.03.15 |
[숫자] Softeer level2 8단 지도 자동 구축 (Python 파이썬) (0) | 2024.03.14 |
[조건문] Softeer level2 8단 변속기 (Python 파이썬) (0) | 2024.03.14 |
[숫자] 소프티어 Softeer level 2 전광판 (Python 파이썬) (0) | 2024.03.12 |