728x90
이번 포스트에서는 CodeUp의 1805번 "입체기동장치 생산공장" 문제를 풀어보겠다.
문제 설명은 다음과 같다.
입력과 출력은 다음과 같다.
## 문제 해석:
우선 입체기동장치의 수를 입력 받는다. 그런 다음에 입력받은 개수를 기반으로 각각 식별번호와 가스용량을 입력받아, 식별번호로 정렬해서 출력하면 된다.
## 문제 풀이:
먼저 입체기동장치의 수를 입력 받는 코드를 작성한다.
while 1:
n = int(input())
if n <= 0 or n > 100:
print("1~100 사이의 수를 입력해주세요")
continue
또한 개수가 1보다 작거나 100보다 크면 안되므로, 이에 관한 제어문구도 함께 작성한다. 이어서 입력 받은 개수 기반으로 식별번호와 가스용량을 입력받는다.
while 1:
n = int(input())
if n <= 0 or n > 100:
print("1~100 사이의 수를 입력해주세요")
continue
else:
dict_num = {}
count = 0
while count < n:
a, b = input().split(' ')
a, b = int(a), int(b)
if a <= 0 or a > 100 or b < 0 or b > 10000:
print("a의 값 범위는 1~100이며, b의 값 범위는 0~10000입니다.")
continue
if a in dict_num.keys():
print("중복된 식별 번호는 입력 불가")
continue
마찬가지로 문제에서 제시하고 있는 제한사항도 함께 제어문을 통해 추가한다. 마지막으로 딕셔너리 형태로 식별번호와 가스용량을 저장하고 정렬하면 된다.
while 1:
n = int(input())
if n <= 0 or n > 100:
print("1~100 사이의 수를 입력해주세요")
continue
else:
dict_num = {}
count = 0
while count < n:
a, b = input().split(' ')
a, b = int(a), int(b)
if a <= 0 or a > 100 or b < 0 or b > 10000:
print("a의 값 범위는 1~100이며, b의 값 범위는 0~10000입니다.")
continue
if a in dict_num.keys():
print("중복된 식별 번호는 입력 불가")
continue
else:
dict_num[a] = b
count += 1
rst = dict(sorted(dict_num.items()))
break
그러나 sorted() 함수의 반환값이 list므로 dict() 함수를 통해 형변환을 시켜주어야 한다.
## 최종 코드:
while 1:
n = int(input())
if n <= 0 or n > 100:
print("1~100 사이의 수를 입력해주세요")
continue
else:
dict_num = {}
count = 0
while count < n:
a, b = input().split(' ')
a, b = int(a), int(b)
if a <= 0 or a > 100 or b < 0 or b > 10000:
print("a의 값 범위는 1~100이며, b의 값 범위는 0~10000입니다.")
continue
if a in dict_num.keys():
print("중복된 식별 번호는 입력 불가")
continue
else:
dict_num[a] = b
count += 1
rst = dict(sorted(dict_num.items()))
break
for i in rst:
print(f'{i} {rst[i]}')
## 실행 결과:
'Coding Test > CodeUp' 카테고리의 다른 글
CodeUp-3016 (1등 한 학생의 성적) (1) | 2023.03.06 |
---|---|
CodeUp-3015 (성적표 출력) (0) | 2023.03.05 |
CodeUp-3004 (데이터 재정렬) (0) | 2023.03.04 |
CodeUp-2623 (최대공약수 구하기) (0) | 2023.03.03 |
CodeUp-4012 (석차 계산) (0) | 2023.03.02 |