๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 5093_Letter Replacement

๋ฟŒ์•ผ._. 2025. 1. 24. 23:18
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/5093)

< Letter Replacement >

 

๋ฌธ์ œ ํ’€์ด 

 

์ด๋ฏธ ๋‚˜์™”๋˜ ๋ฌธ์ž์ธ์ง€ ํ™•์ธํ•˜์—ฌ ๋‚˜์™”๋˜ ๋ฌธ์ž๋ผ๋ฉด HashMap์„ ํ™œ์šฉํ•˜์—ฌ ๋Œ€์ฒดํ•œ๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.HashSet;

public class _5093_ { // Letter Replacement

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
		String str = "";
		while (!(str = bf.readLine()).equals("#")) {
			HashSet<Character> set = new HashSet<>();
			HashMap<Character, Character> map = new HashMap<>();
            
			String result = "";
			int idx = 1;
			for (int i = 0; i < str.length(); i++) {
				if (!set.contains(Character.toLowerCase(str.charAt(i)))) {
					set.add(Character.toLowerCase(str.charAt(i)));
					result += str.charAt(i);
				} else {
					if (map.containsKey(Character.toLowerCase(str.charAt(i)))) {
						result += map.get(Character.toLowerCase(str.charAt(i)));
					} else {
						if (idx == 1) {
							map.put(Character.toLowerCase(str.charAt(i)), '*');
						} else if (idx == 2) {
							map.put(Character.toLowerCase(str.charAt(i)), '?');
						} else if (idx == 3) {
							map.put(Character.toLowerCase(str.charAt(i)), '/');
						} else if (idx == 4) {
							map.put(Character.toLowerCase(str.charAt(i)), '+');
						} else if (idx == 5) {
							map.put(Character.toLowerCase(str.charAt(i)), '!');
						}
						result += map.get(Character.toLowerCase(str.charAt(i)));
						idx += 1;
					}
				}
			}
			bw.write(result + "\n");
		}
		bw.flush();
	}
}

 

๋ณ€์ˆ˜)
str : ์ž…๋ ฅ ๋ฌธ์ž์—ด
result : ์ถœ๋ ฅ ๋ฌธ์ž์—ด
idx : ๋ช‡ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋œ ๋ฌธ์ž์ธ์ง€
set : ํ˜„์žฌ๊นŒ์ง€ ๋‚˜์˜จ ๋ฌธ์ž
map : HashMap <๋ฌธ์ž, ๋Œ€์ฒด ๋ฌธ์ž>

 

#๊ฐ€ ์ž…๋ ฅ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) ๋ฌธ์ž์—ด์„ ํƒ์ƒ‰ํ•˜๋ฉฐ ํ•œ ๋ฒˆ๋„ ๋‚˜์˜ค์ง€ ์•Š์€ ๋ฌธ์ž๋ผ๋ฉด set์— ์ถ”๊ฐ€ ๋ฐ result์— ๋ฌธ์ž๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

2) ์ด๋ฏธ ๋‚˜์˜จ ๋ฌธ์ž๋ผ๋ฉด HashMap์„ ํƒ์ƒ‰ํ•˜์—ฌ key๊ฐ’์œผ๋กœ ์žˆ๋‹ค๋ฉด result์— value๋ฅผ ๋”ํ•ด์ค€๋‹ค. key๊ฐ’์œผ๋กœ ์—†๋‹ค๋ฉด HashMap์— ์ถ”๊ฐ€ํ•˜๊ณ  result์—๋„ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

result๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 6513_Deli Deli  (1) 2025.02.04
[Baekjoon] 7107_Journey of A Knight  (1) 2025.02.03
[Baekjoon] 31047_Warehouse  (1) 2025.01.23
[Baekjoon] 9357_Eligibility  (1) 2025.01.22
[Baekjoon] 6973_Dynamic Dictionary Coding  (0) 2025.01.21