[백준(BOJ) 1919번] 애너그램 만들기 (C++)

2022. 1. 7. 22:59·PS(Problem Solving)/C++

문제 링크

https://www.acmicpc.net/problem/1919

 

문제 정보

입력

첫째 줄과 둘째 줄에 영어 단어가 소문자로 주어진다. 각각의 길이는 1,000자를 넘지 않으며, 적어도 한 글자로 이루어진 단어가 주어진다.

출력

첫째 줄에 답을 출력한다.

 

풀이

 string 자료형을 통해 문자열 2개를 입력 받은 후에 각각 알파벳의 개수를 배열에 저장한다. 그리고 알파벳의 개수가 다른 만큼 더해주면 애너그램 관계에 있도록 만들기 위해 제거해야 하는 최소 개수의 문자 수가 나온다! 두 번째 문자열의 알파뱃 개수가 더 많아서 단순하게 차이를 계산하면 음수가 나올 수 있으므로 abs() 함수를 사용해서 절댓값으로 계산한다.

 

소스 코드

#include <bits/stdc++.h>
using namespace std;

int main(void) {
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	string s1, s2;
	cin >> s1 >> s2;
	
	int alphabet1[26] = {};
	int alphabet2[26] = {};
	
	for (int i = 0; i < s1.length(); i++) {
		alphabet1[s1[i] - 'a']++;
	}
	for (int i = 0; i < s2.length(); i++) {
		alphabet2[s2[i] - 'a']++;
	}
	
	int ans = 0;
	for (int i = 0; i < 26; i++) {
		if (alphabet1[i] != alphabet2[i]) {
			ans += abs(alphabet1[i] - alphabet2[i]);
		}
	}
    
	cout << ans;
	
	return 0;
}

 

저작자표시 비영리 변경금지 (새창열림)
'PS(Problem Solving)/C++' 카테고리의 다른 글
  • [백준(BOJ) 3273번] 두 수의 합 (C++)
  • [백준(BOJ) 2577번] 숫자의 개수 (C++)
  • [백준(BOJ) 1475번] 방 번호 (C++)
  • [백준(BOJ) 13300번] 방 배정 (C++)
SiwonHae
SiwonHae
프로그래밍을 공부하고 있는 학생입니다.
  • SiwonHae
    시원해의 블로그
    SiwonHae
  • 전체
    오늘
    어제
    • 전체보기 (150)
      • PS(Problem Solving) (95)
        • C (25)
        • C++ (33)
        • JAVA (37)
      • Algorithm & Data Structure (13)
      • Computer Science (12)
        • Network (2)
        • Design Pattern (10)
      • Back-end (6)
        • Spring (5)
      • Front-end (1)
        • React (1)
      • JAVA (4)
      • 정보처리기사 (17)
      • SQLD (2)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
SiwonHae
[백준(BOJ) 1919번] 애너그램 만들기 (C++)
상단으로

티스토리툴바