jyamethyst21 님의 블로그

백준 3047번 - 'ABC' (PYTHON 풀이) 본문

CODING 💻

백준 3047번 - 'ABC' (PYTHON 풀이)

jyamethyst21 2026. 3. 7. 00:55

문제:

 

읽다보면 헷갈릴 수도 있는데 입력받은 문자열의 순서에 맞게 최초로 입력받았던 A, B, C를 다시 정렬해서 출력하는 문제이다.

만약 1 5 10 이런식으로 처음 입력받고, 두번째 줄에 ACB 이렇게 입력받을 때 ACB는 현재 '가장 작음-가장 큼-중간 값'이므 입력받았기 때문에 1 10 5가 출력될 것이다.

첫 번째 줄에 입력받은 수를 그냥 단순히 1,2,3 이런식으로 순서대로 보면 좀 이해가 될 것이다.

 

풀이:

nums = list(map(int, input().split()))
string = input()

nums.sort()

for c in string:
    if c == 'A':
        print(nums[0], end=' ')
    elif c == 'B':
        print(nums[1], end=' ')
    elif c == 'C':
        print(nums[2], end=' ')

nums에 A,B,C를 입력받고 string에 문자열을 입력받는다.

앞서 말한 것처럼 A,B,C는 그냥 정렬 용도일 뿐 크게 중요하지 않기 때문에 오름차순으로 정렬시키고 입력받은 문자열을 하나씩 순회하면서 A면 이미 정렬한 nums의 첫번째 값, B면 두번째, C면 세번째 값을 출력하도록 한다. 해당 문제는 총 3개의 값만 입력받으므로 A,B,C에 대해서만 조건을 걸어두면 된다.