https://www.acmicpc.net/problem/6996
문제를 풀면서 몰랐던 개념
(1) [Python] Anagram을 판별하는 알고리즘
*Anagram 이란?
한 단어를 구성하는 글자의 개수를 그대로 유지하면서 순서만 바꾼 단어를 일컫는 말이다.
-> 만약 두 단어가 주어졌을 때, 두 문자열이 아나그램이라면 sorted 함수의 인자로 줬을 때 두 개의 값이 같게 나온다.
"정렬했을 때의 값이 같다!!!"
(2) [Python] sorted()와 sort()의 차이점
-> sort 함수는 리스트명.sort() 형식으로 "리스트형의 메소드"이며 리스트 원본 값을 직접 수정
-> sorted 함수는 sorted(리스트명) 형식으로 "내장 함수"이며 리스트 원본 값은 그대로이고 정렬 값을 반환
# sort 함수
arr1 = [5, 2, 8]
arr2 = arr1.sort() # 원본을 정렬하고 수정
print('arr1: ', arr1)
print('-----정렬 후-----')
print('arr1: ', arr1)
print('arr2: ', arr2)
>>> arr1: [5, 2, 8]
>>> arr1: [2, 5, 8]
>>> arr2: None
* sort() 함수의 리턴 값이 None이다. 정렬된 값은 리턴되지 않는다.
-> 원본 리스트 값이 정렬된 값으로 수정돼있는 것을 볼 수 있음!!!
# sorted 함수
arr1 = [5, 2, 8]
arr2 = sorted(arr1) # 원본은 유지하고 정렬한 새 리스트를 만듦.
print('arr1: ', arr1)
print('-----정렬 후-----')
print('arr1: ', arr1)
print('arr2: ', arr2)
>>> arr1: [5, 2, 8]
>>> arr1: [5, 2, 8]
>>> arr2: [2, 5, 8]
원본 리스트 arr1 값은 유지되고 정렬된 새 리스트는 arr2에 저장된 것을 볼 수 있다!
문제의 접근 방법
- Anagram 개념 알기
내가 막혔던 부분
- Anagram을 코드로 구현
- sort 함수와 sorted 함수의 차이점
문제 풀이 방법
테스트 케이스 횟수 n번 입력 받기 -> n번만큼 반복문을 돌려서 비교할 두 단어 a,b 입력받기 -> 원본 값을 유지하기 위해(출력 시 사용) sorted 함수를 사용해 두 문자열 정렬 후 A, B에 저장 -> 조건문을 사용해서 만약 A와 B의 값이 같다면 True, 다르다면 False이므로 출력형식에 맞게 출력하기!
소스코드
n = int(input())
for i in range(n):
a,b = input().split()
A = sorted(a)
B = sorted(b)
if A == B:
print(str(a)+' &', b, 'are anagrams.')
else:
print(str(a)+' &', b, 'are NOT anagrams.')
'백준 write-up > 정렬 & 그리디' 카테고리의 다른 글
[백준] 도비의 난독증 테스트 : 2204번 - Python (0) | 2022.06.23 |
---|---|
[백준] 종이자르기 : 2628번 - Python (0) | 2022.06.18 |
[백준] 세수정렬 : 2752번 - Python (0) | 2022.06.17 |
[백준] 최후의 승자는 누구? : 12760번 - Python (0) | 2022.06.15 |
[백준] 잃어버린 괄호 : 1541번 - Python (0) | 2022.06.14 |