본문 바로가기
코딩 테스트/프로그래머스

숫자 짝꿍

by ornni 2024. 6. 6.
728x90
반응형

첫번째 코드

 

X의 숫자 원소들의 개수를 세고 X에 원소가 있는 경우만 Y의 원소를 세어 XY라는 리스트를 만들었다.

XY리스트에 숫자가 있는 경우 해당 원소는 짝꿍이 있는 것이므로

"원소 * XY"에서 표현한 개수로 곱한다.

또한 00과 같은 경우 0으로 표현하기 위해 int로 바꾸고 다시 str로 돌린다.

 

def solution(X, Y):
    answer = ''
    x_list = [0] * 10
    xy_list = [0] * 10

    for i in X:
        x_list[int(i)] += 1

    for i in Y:
        if x_list[int(i)] > 0:
            xy_list[int(i)] += 1

    for i in range(len(xy_list)-1, -1, -1):
        if xy_list[i] > 0:
            answer += (str(i) * xy_list[i])
    
    if answer:
        return str(int(answer))
    else:
        return "-1"

 

오류!


두번째 코드

 

오류의 원인은 X와 Y의 최소값을 고려해야 했다는 걸 알았다.

예를 들어 X = "abc", Y="abcc"이면 내 코드는 c를 두번 불러오기 때문에 두 개의 리스트에서 최소값을 가져와야 한다.

 

def solution(X, Y):
    answer = ''
    x_list = [0] * 10
    xy_list = [0] * 10

    for i in X:
        x_list[int(i)] += 1

    for i in Y:
        if x_list[int(i)] > 0:
            xy_list[int(i)] += 1

    for i in range(len(xy_list)-1, -1, -1):
        if xy_list[i] > 0:
            answer += (str(i) * min(xy_list[i], x_list[int(i)]))
    
    if answer:
        return str(int(answer))
    else:
        return "-1"

 

답은 맞은 듯 하다 시간 초과가 꽤 발생한다!


세번째 코드

 

str(int(answer))이 부분에서 오래 걸리는듯 하다.

그리고 count, any, all이라는 함수를 알게 되었다!

answer을 문자로 받지 않고 숫자로 받아 생각하자.

 

두 방법을 신경쓰면서 문제를 풀자!!

 

def solution(X, Y):
    answer = []

    for i in range(9, -1, -1):
        x = X.count(str(i))
        y = Y.count(str(i))
        
        if min(x, y) > 0:
            for j in range(min(x, y)):
                answer.append(i)

    if answer:
        if any(answer) == False:
            return "0"
        else:
            return ''.join(map(str, answer))
    else:
        return "-1"


링크

https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/131128.%E2%80%85%EC%88%AB%EC%9E%90%E2%80%85%EC%A7%9D%EA%BF%8D

 

programmers/프로그래머스/1/131128. 숫자 짝꿍 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

둘만의 암호  (2) 2024.06.08
신고 결과 받기  (0) 2024.06.07
N개의 최소공배수  (0) 2024.06.04
바탕화면 정리  (0) 2024.06.03
가장 큰 수  (2) 2024.06.02