[Python] 백준1919번 : 애너그램 만들기

hjeu·2025년 1월 21일

백준

목록 보기
25/48

💡문제

백준 1919번 문제 링크

🍀풀이

틀린 코드

s1, s2 = input(), input()

cnt = 0

for i in s1:
    for j in s2:
        if i == j:
            cnt += 1

print(len(s1) + len(s2) - cnt)

처음 문제와 예제를 보고 풀었을 때는 위 코드처럼 하나하나 비교해서 같은 문자면 +1을 하고 그거를 총 문자열 길이에 빼는 방식으로 했다. 근데 틀렸다고 나와서 반례들을 넣어보니까 예제는 두개씩 밖에 없어서 가능한데 abbcccddddeeeee / eddcccbbbbaaaaa 이렇게 나오면 맞지 않다는걸 알아서 다른 방식으로 생각하기로 했다.

정답 코드

s1, s2 = input(), input()

arr = [0] * 26
result = 0

for i in s1:
    arr[ord(i)-97] += 1

for i in s2:
    arr[ord(i)-97] -= 1
    
for i in arr:
    result += abs(i)
    
print(result)

지난 배열 문제 풀던 방식과 비슷하게 풀었다.
첫번째 문자열의 알파벳 여부를 배열에 넣고, 두번째 문자열의 알파벳을 뺀다.
그리고 남은 횟수들을 다 더해주는데 음수가 있을 수 있으니까 절대값 함수인 abs()를 사용해서 저장한다!

ord()를 ord[]로 해서 런타임 에러가 났던건 안비밀


profile
나는야 개발왕이 될거야! (๑ •̀ω•́)۶

0개의 댓글