πŸ’» Computer Science/- Data Structure, Algorithm

[μ•Œκ³ λ¦¬μ¦˜ PS] λ°±μ€€ 10808번 μ•ŒνŒŒλ²³ 개수 μžλ°” 문제 풀이

Wonit 2021. 2. 3. 10:29

문제

ν•΄λ‹Ή ν¬μŠ€νŒ…μ€ λ°±μ€€μ˜ 10808번 μ•ŒνŒŒλ²³ 개수 의 μ ‘κ·Όκ³Ό ν•΄κ²° 방법을 μ„€λͺ…ν•œ κΈ€ μž…λ‹ˆλ‹€.
μ •λ‹΅ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν™•μΈν•˜μ‹œλ €λ©΄ solve url μ—μ„œ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.

이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ ‘κ·Όν•΄μ•Ό ν•˜λŠ”μ§€λ₯Ό λ¨Όμ € μƒκ°ν•΄λ³΄μž.

해결법

ν•΄λ‹Ή μœ ν˜•μ˜ λ¬Έμ œλŠ” μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν•΄κ²°μ„ ν•  λ•Œ 자주 λ“±μž₯ν•˜λŠ” μ ‘κ·Ό 방법이닀.

 

μ΄λŠ” κ³„μˆ˜ μ •λ ¬, Counting Sortμ—μ„œ μ‚¬μš©ν•˜λŠ” 둜직과 λΉ„μŠ·ν•˜λ‹€.

 

μ•ŒνŒŒλ²³μ˜ 개수λ₯΄ μ„ΈκΈ° μœ„ν•΄μ„œλŠ” μž…λ ₯ λ¬Έμžμ—΄μ„ ν•˜λ‚˜ν•˜λ‚˜ λΆ„ν•΄ν•΄μ„œ μ•ŒνŒŒλ²³μ˜ 수λ₯Ό μ„ΈλŠ” 것이 μ•„λ‹ˆλΌ 26개의 μ•ŒνŒŒλ²³ 문자의 μΈλ±μŠ€μ— 각각 수λ₯Ό μ¦κ°€μ‹œν‚€λŠ” λ°©λ²•μœΌλ‘œ μ‚¬μš©λœλ‹€.

 

이런 μœ ν˜•μ˜ λ¬Έμ œλŠ” μ§μ ‘μ μœΌλ‘œ λ“±μž₯ν•˜μ§€λŠ” μ•Šκ² μ§€λ§Œ 문제 풀이λ₯Ό μœ„ν•΄ μ‚¬μš©λ  수 μžˆλŠ” λ¬Έμ œμ΄λ―€λ‘œ μ•Œμ•„κ°€λŠ” 것도 μ€‘μš”ν•˜λ‹€.

μ •λ‹΅ μ½”λ“œ

public class Main {
  public static void main(String[] args) throws IOException{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    char[] s = br.readLine().toCharArray();

    int[] alphabet = new int[26];

    for(int i = 0; i < s.length; i++) {
      alphabet[s[i] - 'a']++;
    }

    for(int i = 0; i < alphabet.length; i++) {
      bw.write(alphabet[i] + " ");
    }
    bw.flush();
    bw.close();
  }
}

μ •λ‹΅ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν™•μΈν•˜μ‹œλ €λ©΄ solve url μ—μ„œ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.