https://school.programmers.co.kr/learn/courses/30/lessons/120886
[문제 설명]
문자열 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 |