Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준
- 두 배열 합치기
- 뒤집은 소수
- 연속부분수열
- 점수계산
- GitHub #Commit #BaekJoon
- Two Pointer
- 공통원소 구하기
- 투 포인터
- 모든행과열대각선의합
- 아스키코드
- 가장 짧은 문자거리
- 격자판
- Pointer
- 배열
- 자바
- 등수구하기
- 10991
- 누적 계산
- 인프런
- array
- 임시반장 정하기
- 알고리즘
- 최대 길이
- 보이는 학생
- 코테준비
- 큰 수 출력하기
- java
- ArrayList
- 10992
Archives
- Today
- Total
ezhoon
[인프런] 04-02 아나그램(해쉬) 본문
📖 문제
- 첫 줄과 두 번째 줄에 단어 입력
- Anagram 구분 (두 문자열의 나열 순서와 상관없이 구성이 일치하면 두 문자열은 아나그램이라고 한다.
- 예를 들면 AbaAeCe 와 baeeACA 는 나열순서는 다르지만 구성을 살펴보면 똑같기 때문에 아나그램입니다.
- 아나그램 일 경우 "YES" 아닐 경우 "NO" 출력
⚠️ 주의사항
- 문자열의 종류만 구분하는게 아닌 안의 알파벳과 개수가 모두 일치해야 한다.
- 대소문자는 구분해야 한다.
✍️ 이해
* 1. 첫 줄 단어(A) 둘째 줄 단어(B)
* 2. A를 Map 입력
* 2-1. B를 Map에 getOrDefault(x, 0) == 0 이용해서 true -> answer = NO, break;
* 2-2. false 경우 map에 현재 존재하는 것이므로 x값의 value를 -1 해줘야한다.
* // 2-2의 이유는 AAABB, AABB비교 할 경우 A와 B의 value 값은 다르지만 존재한다는 이유로 if문을 ture로 빠져나가기 때문에 존재 할 경우 value 값을 -1 해줘야 한다.
* 3. return answer
✏️ 풀이
public class Main {
public String solution(String str1, String str2) {
String answer = "YES";
HashMap<Character, Integer> map = new HashMap<>();
for (char x : str1.toCharArray()) {
map.put(x, map.getOrDefault(x, 0) + 1);
}
for (char x : str2.toCharArray()) {
if (map.getOrDefault(x, 0) == 0) {
answer = "NO";
break;
}else map.put(x, map.get(x) - 1);
}
return answer;
}
public static void main(String[] args) throws IOException {
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str1 = br.readLine();
String str2 = br.readLine();
System.out.println(T.solution(str1, str2));
}
}
'[Java] 인프런 문제풀이 > HaspMap, TresSet (해쉬, 정렬지원 Set)' 카테고리의 다른 글
[인프런] 04_05 K번째 큰 수 (0) | 2022.01.25 |
---|---|
[인프런] 04_04 모든 아나그램 (0) | 2022.01.25 |
[인프런] 04_03 매출액의 종류 (0) | 2022.01.24 |
[인프런] 04-01 학급 회장(Hash) (0) | 2022.01.23 |
Comments