데브수달 2024. 12. 2. 07:24
728x90
반응형

프로그래머스의 '숫자 짝궁' 문제에서 주어진 입력값 `"100"`과 `"2345"`에 대해 기댓값이 `-1`인 이유는 두 숫자 문자열 간에 공통된 숫자가 없기 때문입니다. 따라서, 공통된 숫자가 없을 경우 `-1`을 반환해야 합니다.

이 문제를 해결하기 위해서는 공통된 숫자가 없을 때 `-1`을 반환하도록 코드를 수정해야 합니다. 아래는 수정된 코드입니다.

## 수정된 파이썬 코드

```python
def solution(X, Y):
    from collections import Counter

    # 각 숫자의 등장 횟수를 세기
    count_X = Counter(X)
    count_Y = Counter(Y)

    # 공통 숫자 찾기
    common_digits = []
    for digit in range(9, -1, -1):  # 9부터 0까지
        str_digit = str(digit)
        if str_digit in count_X and str_digit in count_Y:
            # 공통 숫자의 최소 개수만큼 추가
            common_count = min(count_X[str_digit], count_Y[str_digit])
            common_digits.append(str_digit * common_count)

    # 결과 문자열 만들기
    if not common_digits:
        return "-1"  # 공통된 숫자가 없을 경우 -1 반환
    
    result = ''.join(common_digits)
    
    # 결과가 0으로 시작하는 경우 처리
    return result if result[0] != '0' else "0"

# 예시 사용
print(solution("100", "2345"))  # 출력: "-1"
```

## 코드 설명
1. **Counter 사용**: 각 숫자 문자열에서 숫자의 개수를 세어 `count_X`와 `count_Y`에 저장합니다.
2. **공통 숫자 찾기**: 9부터 0까지의 숫자를 확인하여, 두 문자열에서 공통으로 등장하는 숫자를 찾습니다.
3. **결과 처리**: 공통된 숫자가 없으면 `-1`을 반환하고, 공통된 숫자가 있으면 이를 조합하여 결과를 반환합니다.

이제 이 코드를 사용하면 입력값 `"100"`과 `"2345"`에 대해 올바르게 `-1`을 반환할 것입니다.


728x90
반응형