Yozzang의 해킹일기 💻
article thumbnail
728x90

이번 포스트에서는 CodeUp의 1805번 "입체기동장치 생산공장" 문제를 풀어보겠다.

CodeUp


문제 설명은 다음과 같다.

문제 설명

입력과 출력은 다음과 같다.

입력
출력

## 문제 해석:

우선 입체기동장치의 수를 입력 받는다. 그런 다음에 입력받은 개수를 기반으로 각각 식별번호와 가스용량을 입력받아, 식별번호로 정렬해서 출력하면 된다.

## 문제 풀이:

먼저 입체기동장치의 수를 입력 받는 코드를 작성한다.

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
profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!