프로그래머스/파이썬_입문

A로 B 만들기 + Counter()

싱싱한복초이 2025. 1. 13. 10:29

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

 

프로그래머스

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

programmers.co.kr

[문제 설명]

문자열 before after가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 0 < before의 길이 == after의 길이 < 1,000
  • before와 after는 모두 소문자로 이루어져 있습니다.

[나의 풀이]

 

(틀린 풀이)

def dictionary(letter):
    dic = {}
    for _ in letter:
        if dic[_] == 'none':
            dic[_] = 1
        else: dic[_] += 1

def solution(before, after):
    if dictionary(before) == dictionary(after):
        return 1
    else:
        return 0

처음에 위와 같이 작성했는데 if dic[_] == 'none'이라는 표현은 없기 때문에 error가 떴다.

 

수정방법1)

if dic.get(_, 'none') == 'none':

수정방법2)

if _ not in dic:

 

(수정 결과)

def dictionary(letter):
    dic = {}
    for _ in letter:
        if _ not in dic:
            dic[_] = 1
        else:
            dic[_] += 1
    return dic

def solution(before, after):
    if dictionary(before) == dictionary(after):
        return 1
    else:
        return 0

 

⭐챗지피티의 추가 팁

 

if 조건문에서 == 비교 결과에 따라 1 또는 0을 반환하려면, 조건문 없이도 간결하게 표현할 수 있습니다:

return int(dictionary(before) == dictionary(after))
def dictionary(letter):
    dic = {}
    for _ in letter:
        if _ not in dic:
            dic[_] = 1
        else:
            dic[_] += 1
    return dic

def solution(before, after):
    return int(dictionary(before) == dictionary(after))

 

[다른 풀이]

1)

from collections import Counter

def solution(before, after):
    if Counter(before) == Counter(after):
        return 1
    else:
        return 0
from collections import Counter

def solution(before, after):
    return int(Counter(before) == Counter(after))

 

Counter함수

 

2)

def solution(before, after):
    return 1 if sorted(before)==sorted(after) else 0

'프로그래머스 > 파이썬_입문' 카테고리의 다른 글

치킨 쿠폰  (0) 2025.01.15
이진수 더하기  (0) 2025.01.14
k의 개수  (0) 2025.01.12
로그인 성공? +dict()  (0) 2025.01.11
옹알이 (1) + 정규표현식  (0) 2025.01.10