[HashMap] 2. ์๋๊ทธ๋จ
์ค๋ช
Anagram์ด๋ ๋ ๋ฌธ์์ด์ด ์ํ๋ฒณ์ ๋์ด ์์๋ฅผ ๋ค๋ฅด์ง๋ง ๊ทธ ๊ตฌ์ฑ์ด ์ผ์นํ๋ฉด ๋ ๋จ์ด๋ ์๋๊ทธ๋จ์ด๋ผ๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด AbaAeCe ์ baeeACA ๋ ์ํ๋ฒณ์ ๋์ด ์์๋ ๋ค๋ฅด์ง๋ง ๊ทธ ๊ตฌ์ฑ์ ์ดํด๋ณด๋ฉด A(2), a(1), b(1), C(1), e(2)๋ก
์ํ๋ฒณ๊ณผ ๊ทธ ๊ฐ์๊ฐ ๋ชจ๋ ์ผ์นํฉ๋๋ค. ์ฆ ์ด๋ ํ ๋จ์ด๋ฅผ ์ฌ ๋ฐฐ์ดํ๋ฉด ์๋ํธ ๋จ์ด๊ฐ ๋ ์ ์๋ ๊ฒ์ ์๋๊ทธ๋จ์ด๋ผ ํฉ๋๋ค.
๊ธธ์ด๊ฐ ๊ฐ์ ๋ ๊ฐ์ ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ฉด ๋ ๋จ์ด๊ฐ ์๋๊ทธ๋จ์ธ์ง ํ๋ณํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. ์๋๊ทธ๋จ ํ๋ณ์ ๋์๋ฌธ์๊ฐ ๊ตฌ๋ถ๋ฉ๋๋ค.
์ ๋ ฅ
์ฒซ ์ค์ ์ฒซ ๋ฒ์งธ ๋จ์ด๊ฐ ์ ๋ ฅ๋๊ณ , ๋ ๋ฒ์งธ ์ค์ ๋ ๋ฒ์งธ ๋จ์ด๊ฐ ์ ๋ ฅ๋ฉ๋๋ค.
๋จ์ด์ ๊ธธ์ด๋ 100์ ๋์ง ์์ต๋๋ค.
์ถ๋ ฅ
๋ ๋จ์ด๊ฐ ์๋๊ทธ๋จ์ด๋ฉด “YES"๋ฅผ ์ถ๋ ฅํ๊ณ , ์๋๋ฉด ”NO"๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
AbaAeCe
baeeACA
์์ ์ถ๋ ฅ 1
YES
์์ ์ ๋ ฅ 2
abaCC
Caaab
์์ ์ถ๋ ฅ 2
NO
<<ํ์ด>>
-๋์ ํ์ด-
์๊ฐ ๋ณต์ก๋ : O(N)
์ผ๋จ ใ ใ ๋์ ํ์ด๋ ํฌ๊ฒ ์ด์์ด ์์ด๋ณด์ธ๋ค๋ง,, ์ ๋ต์ด ํ๋ ธ๋ค!!
์ด๋์ ์ค๋ฅ๊ฐ ๋๋ ๊ฒ์ผ๊น ...
import java.util.*;
class Main {
public String solution(String a, String b) {
HashMap<Character, Integer> map1 = new HashMap<>();
HashMap<Character, Integer> map2 = new HashMap<>();
String answer = "";
for(char x : a.toCharArray()) {
map1.put(x, map1.getOrDefault(x, 0) + 1);
}
for(char x : b.toCharArray()) {
map2.put(x, map2.getOrDefault(x, 0) + 1);
}
for(char k : map1.keySet()) {
if(!map2.containsKey(k)) answer = "NO";
else {
if(map1.get(k) != map2.get(k)) answer = "NO";
else answer = "YES";
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
String a = in.next();
String b = in.next();
System.out.println(T.solution(a, b));
}
}
์ด ํ์ด๋ฅผ ์กฐ๊ธ ์์ ํด๋ณธ ๊ฒฐ๊ณผ
import java.util.*;
class Main {
public String solution(String a, String b) {
HashMap<Character, Integer> map1 = new HashMap<>();
HashMap<Character, Integer> map2 = new HashMap<>();
String answer = "";
if (a.length() != b.length()) {
return "NO";
}
for(char x : a.toCharArray()) {
map1.put(x, map1.getOrDefault(x, 0) + 1);
}
for(char x : b.toCharArray()) {
map2.put(x, map2.getOrDefault(x, 0) + 1);
}
for(char k : map1.keySet()) {
if(!map2.containsKey(k)) answer = "NO";
else {
if(map1.get(k) != map2.get(k)) {
answer = "NO";
break;
}
else answer = "YES";
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
String a = in.next();
String b = in.next();
System.out.println(T.solution(a, b));
}
}
ใ ใ ใ ใ ๋ฐ๋ก break๋ฅผ ์ถ๊ฐํ๋ ์ ๋ต์ ๋ง์ท๋ค ใ ใ ใ ใ ใ
์์์ !!!!!!! ์๊ฐํด๋ณด๋ break๋ฅผ ์ ํ๊ฒ ๋๋ฉด NO๊ฐ ๋๋๋ผ๋ ๋ค์ ๋์๊ฐ์ ๋น๊ตํ๊ณ key ๊ฐ์ value๊ฐ ๊ฐ์์ง๋ฉด YES๋ก ๋ฐ๋๊ธฐ ๋๋ฌธ์๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒ์ด๋ค ใ ใ ใ ใ ใ
๊ทธ๋ฆฌ๊ณ ๋ ๋ค๋ฅธ ํ์ด
import java.util.*;
class Main {
public String solution(String a, String b) {
if (a.length() != b.length()) {
return "NO"; // ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฉด ์๋๊ทธ๋จ์ด ์๋
}
HashMap<Character, Integer> map1 = new HashMap<>();
HashMap<Character, Integer> map2 = new HashMap<>();
for(char x : a.toCharArray()) {
map1.put(x, map1.getOrDefault(x, 0) + 1);
}
for(char x : b.toCharArray()) {
map2.put(x, map2.getOrDefault(x, 0) + 1);
}
// map1๊ณผ map2๊ฐ ๋์ผํ์ง ๊ฒ์ฌ
if (!map1.equals(map2)) {
return "NO";
}
return "YES";
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
String a = in.next();
String b = in.next();
System.out.println(T.solution(a, b));
}
}
๋๋ฅ!!! ใ ใ ใ ใ ์ด๊ฒ ๋ญ๋ ... equals๋ผ๋ ๋ฉ์๋๋ฅผ ์ฌ๊ธฐ์ ์ด์ฉํ ์ ์๋ค๋ !!!
์ด๋ ๊ฒ ๋๋ฉด ํ์ฌ๊น์ง equals ๋ฉ์๋๋ฅผ ์ฌ์ ์ ํด์ ์ฌ์ฉํ๊ณ ์๋ ๊ฑด String๊ณผ HashMap์ด๋ค !!
์๋ง ๋ ์์ ๊ฑฐ ๊ฐ์๋ฐ ํ ๋ฒ ์ฐพ์๋ด์ผ๊ฒ ๋ค.
-๊ฐ์ฌ๋ ํ์ด-
๊ฐ์ฌ๋์ ์๋๊ทธ๋จ์ ๋งํ์๋๋ฐ ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํ์๋ค.
import java.util.*;
class Main {
public String solution(String a, String b) {
String answer = "YES";
HashMap<Character, Integer> map = new HashMap<>();
for(char x : a.toCharArray()) {
map.put(x, map.getOrDefault(x, 0) + 1);
}
for(char x : b.toCharArray()) {
if(!map.containsKey(x) || map.get(x) == 0) return "NO";
map.put(x, map.get(x) - 1);
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
String a = in.next();
String b = in.next();
System.out.println(T.solution(a, b));
}
}
์ฐ์ , HashMap์ ํตํด map์๋ค๊ฐ ํค์ ๊ฐ์ ๋ฃ์ ๋ค์, ๋น๊ต ๋์๊ณผ ๋น๊ตํ๋ฉด์ ๊ฐ์ -1์ ํ๋ค.
๋ง์ฝ ๋์๊ฐ๋ ์ค์ ํค๊ฐ์ด ์๊ฑฐ๋ ์ด๋ฏธ ๊ฐ์ด 0์ด๋ผ๋ฉด ๊ฐ์ ์ํฉ์ด ์๋๊ธฐ ๋๋ฌธ์ return NO๋ฅผ ํตํด ๋น ์ ธ ๋์จ๋ค.
๊ทธ๋ฅ answer = "NO";๋ฅผ ํ๋ ค๋ฉด ๊ฑฐ๊ธฐ์ ๋์ด ๋๊ฒ๋ break๋ฅผ ๊ฑธ์ด์ค์ผ ํ๋ค!!!
์๋๋ฉด ๊ณ์ ๋์๊ฐ๊ณ ๋ค์ ์ฝ๋์์ map์ ํค ๊ฐ์ด null ์ํ์์ get์ ํ๊ธฐ ๋๋ฌธ์ ๋ฐํ์ ์๋ฌ๊ฐ ๋๊ฒ ๋๋ค.
return์ ์ฌ์ฉ๊ณผ break์ ์ฌ์ฉ์ ๋ํด ๋ค์ ํ ๋ฒ ์๊ฐํด๋ณด๋ ์ข์ ๋ฌธ์ ์๋ค ใ ใ
<<์ถ๊ฐ ๊ณต๋ถ>>
return๋ฌธ : ๋ฉ์๋ ์์ฒด๋ฅผ ์ข ๋ฃ์ํจ๋ค. ๋ฆฌํด ๊ฐ์ด void์ผ ๋ ๊ทธ๋ฅ return; ์ ํด์ ๋ฉ์๋๋ฅผ ์ข ๋ฃํ ์ ์๋ค.
break๋ฌธ : ๋ฐ๋ณต๋ฌธ์์ ํ์ถ์ ํ ๋ ์ด์ฉํ๋ค.
continue๋ฌธ : break๋ฌธ ์ฒ๋ผ ์์ ํ loop์์ ๋น ์ ธ๋๊ฐ์ง ์๊ณ loop ์์ ์๋ ๋ค์ ์ฝ๋๋ฅผ ์๋ตํ๊ณ ๋ค์ ๋ฐ ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํด์ฌ, ํฌํฌ์ธํฐ, ์ฌ๋ผ์ด๋ฉ] 4. ๋ชจ๋ ์๋๊ทธ๋จ ์ฐพ๊ธฐ (0) | 2024.01.06 |
---|---|
[ํด์ฌ๋งต ์ฌ๋ผ์ด๋ฉ] 3. ๋งค์ถ์ก์ ์ข ๋ฅ (1) | 2024.01.04 |
[ํด์ฌ] 1. ํ๊ธ ํ์ฅ (0) | 2023.12.30 |
[๋ณตํฉ์ ๋ฌธ์ ] 6.์ต๋ ๊ธธ์ด ์ฐ์๋ถ๋ถ์์ด (1) | 2023.12.28 |
[ํฌ ํฌ์ธํฐ] 5. ์ฐ์๋ ์์ฐ์์ ํฉ (0) | 2023.12.26 |
๋๊ธ