본문 바로가기

Algorithm/Implementation

(Python3) - 프로그래머스(PCCE 기출문제) : 8번 / 닉네임 규칙

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/131128

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

Counter를 사용해본 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

1. X와 Y의 각 문자별 빈도수를 Counter에 저장해 & 계산으로 공통적인 부분을 common_count에 저장합니다.

 

2. 공통 수를 저장할 list common_num 선언 후 빈 배열로 초기화합니다.

📔 풀이과정

1. 9부터 0까지 for loop를 수행하며 다음을 진행합니다.

 

  1-1. 숫자 d를 문자로 변환해 difit_str에 저장합니다.

 

  1-2. common_num에 digit_str과 common_count에서 빈도수를 곱한 문자열을 넣어줍니다.

 

2. common_num이 빈 배열이라면 -1을 반환합니다.

 

3. common_num을 문자열로 바꿔줍니다.

 

4. 0000... 형태의 문자열이라면 0만 반환합니다.

 

📔 정답 출력 | 반환

common_num을 반환합니다.


📕 Code

📔 Python3

from collections import Counter

def solution(X, Y):
    common_count = Counter(X) & Counter(Y)
    common_num = []
    
    for d in range(9, -1, -1):
        digit_str = str(d)
        if digit_str in common_count:
            common_num.append(digit_str * common_count[digit_str])
            
    if not common_num:
        return "-1"
        
    common_num = ''.join(common_num)
    
    if common_num == "0" * len(common_num):
        return "0"
    
    return common_num

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.