1. ๋ฌธ์ ์ค๋ช
๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋, ํด๋น ๋ฌธ์์ด์ ์ผ์ชฝ์์๋ถํฐ N/2๊ฐ์ ๋ฌธ์, ์ค๋ฅธ์ชฝ์์๋ถํฐ N/2๊ฐ์ ๋ฌธ์๋ฅผ ๊ฐ๊ฐ ๊ตฐ์งํ ํ๋ค.
(๋ง์ฝ N/2๊ฐ ์์์ ์ ๊ฐ์ง๋ฉด ๋ด๋ฆผํ๋ค.)
๊ฐ ๊ตฐ์ง์์ ๋ฌธ์๋ฅผ ์๋ก ๊ตํํ์์ ๋, ํ ๋ฆฐ๋๋กฌ ๋ฌธ์๊ฐ ๋ง๋ค์ด์ง๋ฉด Yes
, ์ด๋ป๊ฒ ํด๋ ์๋๋ฉด, No
๋ฅผ ์ถ๋ ฅํ๋ผ.
ํ ๋ฆฐ๋๋กฌ์ด๋?
์์์๋ถํฐ ์ฝ์ด๋, ๋ค์์๋ถํฐ ์ฝ์ด๋ ๊ฐ์ ๋ฌธ์์ด์ ์๋ฏธํ๋ค.
ex) ๊ธฐ๋ฌ๊ธฐ
, radar
2. ์ ๊ทผ ๋ฐฉ์
๊ทธ๋ฅ ๋ฌธ์ ์์ ์ฃผ์ด์ง ๊ทธ๋๋ก ํ๋ฉด ๋๋ค.
- ๋ฌธ์์ด์ ์ผ์ชฝ์์๋ถํฐ N/2 ๊ฐ์ ๋ฌธ์, ์ค๋ฅธ์ชฝ์์ ๋ถํฐ N/2 ๊ฐ์ ๋ฌธ์๋ก ๋๋๋ค.
- ๊ฐ ๋ฌธ์๋ค์ ๊ฐ์๋ฅผ ์ผ๋ค.
- ์ํ๋ฒณ ๋ณ๋ก ํ๋๋ผ๋ ๋ฌธ์๊ฐ ์ง์๊ฐ ์๋๋ฉด, ์๋ฌด๋ฆฌ ๋ฐ๊ฟ๋ ํ ๋ฆฐ๋๋กฌ์ด ๋์ง ์๋๋ค. ์ด๋๋
No
๋ฅผ ์ถ๋ ฅํ๋ค. - ๋ชจ๋ ์ํ๋ฒณ์ ๊ฐ์๊ฐ ์ง์์ด๋ค.
Yes
๋ฅผ ์ถ๋ ฅํ๋ค.
3. ์ฝ๋ ๋ถ์
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
HashMap<Character, Integer> map = new HashMap<>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String s = br.readLine();
for (int i = 0; i < (N/2); i++) {
map.compute(s.charAt(i), (k, ov) -> map.get(k) == null? 1 : map.get(k)+1);
map.compute(s.charAt(N-i-1), (k, ov) -> map.get(k) == null? 1 : map.get(k)+1);
}
for (char temp : map.keySet()){
if (map.get(temp) % 2 != 0) {
System.out.println("No");
return;
}
}
System.out.println("Yes");
}
}
4. ์ฑ์ฅ ํ๊ธฐ
๋๋ ๋ฌธ์ ๋ฅผ ํ ๋, map์ด๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ ์ง์ด๋ฃ์๋ค.
๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๋ ๊ทธ๋ฅ ์ํ๋ฒณ ์ ์ฒด๋ฅผ ๋๋ณํ๋ 26๊ฐ์ง๋ฆฌ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๊ฑฐ๊ธฐ์ value๋ก ํด๋น ์ํ๋ฒณ์ด ๋์จ ๊ฐ์๋ฅผ ์ธ๋ ๊ฒฝ์ฐ ๋๋ณด๋ค 2๋ฐฐ์ ๋ ๋นจ๋๋ค.
int [] alphabets = new int[26]; // ์ ์ธ
alphabets[str.charAt(i) - 'a']++; // ๊ฐ ์ํ๋ฒณ์ด ๋์จ ํ์ ์ธ๊ธฐ