Coding Planet

12. μ•”ν˜Έ - replace, Inteager.parseInt(μ§„μˆ˜ λ³€κ²½ν•˜κΈ°) λ³Έλ¬Έ

🎁 μ½”λ”©ν…ŒμŠ€νŠΈ/μ•Œκ³ λ¦¬μ¦˜

12. μ•”ν˜Έ - replace, Inteager.parseInt(μ§„μˆ˜ λ³€κ²½ν•˜κΈ°)

jhj.sharon 2023. 7. 7. 21:41
λ°˜μ‘ν˜•

1. 문제 μš”κ΅¬μ‚¬ν•­

ν˜„μˆ˜λŠ” μ˜ν¬μ—κ²Œ μ•ŒνŒŒλ²³ λŒ€λ¬Έμžλ‘œ κ΅¬μ„±λœ λΉ„λ°€νŽΈμ§€λ₯Ό 맀일 컴퓨터λ₯Ό μ΄μš©ν•΄ λ³΄λƒ…λ‹ˆλ‹€.
λΉ„λ°€νŽΈμ§€λŠ” ν˜„μˆ˜μ™€ μ˜ν¬κ°€ μ„œλ‘œ μ•½μ†ν•œ μ•”ν˜Έλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
λΉ„λ°€νŽΈμ§€λŠ” μ•ŒνŒŒλ²³ ν•œ λ¬Έμžλ§ˆλ‹€ # λ˜λŠ” *이 일곱 개둜 κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
λ§Œμ•½ ν˜„μˆ˜κ°€ “#*****#”으둜 κ΅¬μ„±λœ 문자λ₯Ό λ³΄λƒˆλ‹€λ©΄ μ˜ν¬λŠ” ν˜„μˆ˜μ™€ μ•½μ†ν•œ κ·œμΉ™λŒ€λ‘œ λ‹€μŒκ³Ό 같이 ν•΄μ„ν•©λ‹ˆλ‹€.
1. “#*****#”λ₯Ό 일곱자리의 μ΄μ§„μˆ˜λ‘œ λ°”κΏ‰λ‹ˆλ‹€. #은 μ΄μ§„μˆ˜μ˜ 1둜, *μ΄μ§„μˆ˜μ˜ 0으둜 λ³€ν™˜ν•©λ‹ˆλ‹€. κ²°κ³ΌλŠ” “1000001”둜 λ³€ν™˜λ©λ‹ˆλ‹€.
2. 바뀐 2μ§„μˆ˜λ₯Ό 10μ§„μˆ˜ν™” ν•©λ‹ˆλ‹€. “1000001”을 10μ§„μˆ˜ν™” ν•˜λ©΄ 65κ°€ λ©λ‹ˆλ‹€.
3. μ•„μŠ€ν‚€ λ²ˆν˜Έκ°€ 65문자둜 λ³€ν™˜ν•©λ‹ˆλ‹€. 즉 μ•„μŠ€ν¬λ²ˆν˜Έ 65λŠ” λŒ€λ¬Έμž 'A'μž…λ‹ˆλ‹€.
참고둜 λŒ€λ¬Έμžλ“€μ˜ μ•„μŠ€ν‚€ λ²ˆν˜ΈλŠ” 'A'λŠ” 65번, ‘B'λŠ” 66번, ’C'λŠ” 67번 λ“± μ°¨λ‘€λŒ€λ‘œ 1μ”© μ¦κ°€ν•˜μ—¬ ‘Z'λŠ” 90λ²ˆμž…λ‹ˆλ‹€.
ν˜„μˆ˜κ°€ 4개의 문자λ₯Ό λ‹€μŒκ³Ό 같이 μ‹ ν˜Έλ‘œ λ³΄λƒˆλ‹€λ©΄
#****###**#####**#####**##**
이 μ‹ ν˜Έλ₯Ό 4개의 λ¬Έμžμ‹ ν˜Έλ‘œ κ΅¬λΆ„ν•˜λ©΄
#****## --> 'C'
#**#### --> 'O'
#**#### --> 'O'
#**##** --> 'L'
μ΅œμ’…μ μœΌλ‘œ “COOL"둜 ν•΄μ„λ©λ‹ˆλ‹€.
ν˜„μˆ˜κ°€ 보낸 μ‹ ν˜Έλ₯Ό ν•΄μ„ν•΄μ£ΌλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•΄μ„œ 영희λ₯Ό λ„μ™€μ£Όμ„Έμš”.

μž…λ ₯:
첫 μ€„μ—λŠ” 보낸 문자의 개수(10을 λ„˜μ§€ μ•ˆμŠ΅λ‹ˆλ‹€)κ°€ μž…λ ₯λœλ‹€. λ‹€μŒ μ€„μ—λŠ” 문자의 개수의 일곱 λ°° 만큼의 #λ˜λŠ” * μ‹ ν˜Έκ°€ μž…λ ₯λ©λ‹ˆλ‹€.
ν˜„μˆ˜λŠ” 항상 λŒ€λ¬Έμžλ‘œ 해석할 수 μžˆλŠ” μ‹ ν˜Έλ₯Ό 보낸닀고 κ°€μ •ν•©λ‹ˆλ‹€.

 

 

2. λ‚΄ 풀이


1) μž…λ ₯ λ°›κΈ°:

   - `n`μ—λŠ” λ³΄λ‚Έ λ¬Έμžμ˜ κ°œμˆ˜λ₯Ό μž…λ ₯λ°›μŠ΅λ‹ˆλ‹€.
   - `signal`μ—λŠ” λ¬Έμžμ˜ κ°œμˆ˜μ˜ μΌκ³± λ°° λ§ŒνΌμ˜ `#` λ˜λŠ” `*` μ‹ ν˜Έλ₯Ό μž…λ ₯λ°›μŠ΅λ‹ˆλ‹€.

2) μ‹ ν˜Έ 해석:
   - `StringBuilder` κ°μ²΄ `result`λ₯Ό μƒμ„±ν•˜μ—¬ ν•΄μ„λœ λ¬Έμžμ—΄μ„ μ €μž₯ν•  μ€€λΉ„λ₯Ό ν•©λ‹ˆλ‹€.
   - `for` λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ—¬ λ¬Έμžμ˜ κ°œμˆ˜λ§ŒνΌ λ°˜λ³΅ν•©λ‹ˆλ‹€.
   - κ° λ¬Έμžμ—΄ μ‹ ν˜Έλ₯Ό `substring` λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ 7κΈ€μžμ”© λΆ„λ¦¬ν•©λ‹ˆλ‹€.
   - `letterSignal`μ—λŠ” λΆ„λ¦¬λœ 7κΈ€μžμ˜ λ¬Έμžμ—΄ μ‹ ν˜Έκ°€ μ €μž₯λ©λ‹ˆλ‹€.
   - `letterSignal` λ¬Έμžμ—΄μ—μ„œ `replace` λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ `#`을 `1`둜, `*`을 `0`으둜 λ°”κΏ‰λ‹ˆλ‹€.
   - `Integer.parseInt` λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 2μ§„μˆ˜λ‘œ λ³€ν™˜λœ λ¬Έμžμ—΄μ„ 10μ§„μˆ˜λ‘œ λ³€ν™˜ν•©λ‹ˆλ‹€.
   - `decimal`μ—λŠ” 10μ§„μˆ˜λ‘œ λ³€ν™˜λœ κ°’이 μ €μž₯λ©λ‹ˆλ‹€.
   - `decimal` κ°’을 `char` νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ λŒ€μ‘ν•˜λŠ” μ•„μŠ€ν‚€ λ¬Έμžλ₯Ό μ–»μŠ΅λ‹ˆλ‹€.
   - `letter`μ—λŠ” μ•„μŠ€ν‚€ λ¬Έμžκ°€ μ €μž₯λ©λ‹ˆλ‹€.
   - `result`에 `letter`λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.


package chapter1;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        scanner.nextLine();
        String signal = scanner.nextLine();

        StringBuilder result = new StringBuilder();

        for (int i = 0; i < n; i++) {
            String letterSignal = signal.substring(i * 7, (i + 1) * 7);
            int decimal = Integer.parseInt(letterSignal.replace("#", "1").replace("*", "0"), 2);
            char letter = (char) decimal;
            result.append(letter);
        }

        System.out.println(result.toString());
    }
}
λ°˜μ‘ν˜•
Comments