๊ธฐ๋ก๋ฐฉ

BOJ_2596 : ๋น„๋ฐ€ํŽธ์ง€ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_2596 : ๋น„๋ฐ€ํŽธ์ง€

Soom_1n 2023. 1. 25. 14:07

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

2596๋ฒˆ: ๋น„๋ฐ€ํŽธ์ง€

๋ณ‘ํ˜„์ด๋Š” ์ง€์€์ด์—๊ฒŒ ๋ฌธ์ž A, B, C, D, E, F, G, H ๋กœ ์“ฐ์—ฌ์ง„ ํŽธ์ง€๋ฅผ ๋‚ ๋งˆ๋‹ค ๋ณด๋‚ด๋Š”๋ฐ, ์ปดํ“จํ„ฐ๋กœ ๋ณด๋‚ด๋Š” ๋น„๋ฐ€ํŽธ์ง€๋กœ, ํ•œ ๋ฌธ์ž๋งˆ๋‹ค 0 ๋˜๋Š” 1์ธ ์ˆซ์ž ์—ฌ์„ฏ ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด๋‚ธ๋‹ค. ๋‘˜ ์‚ฌ์ด์˜ ์•ฝ์†์€ ๋‹ค์Œ๊ณผ

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • 0๋˜๋Š” 1๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆซ์ž๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
    • ๊ฐ™๊ฑฐ๋‚˜ ์ฐจ์ด๊ฐ€ 1์ผ๋•Œ๋Š” ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋‹ค
    • ์ฐจ์ด๊ฐ€ 2 ์ด์ƒ์ด๋ฉด ๋ณ€ํ™˜ ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค.
  • ๋ชจ๋‘ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋ฉด, ๋ณ€ํ™˜ํ•œ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅ
  • ๋ณ€ํ™˜์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด, ์ฒ˜์Œ ๋ถˆ๊ฐ€๋Šฅ ํ•œ ๋ฌธ์ž์˜ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.io.FileNotFoundException;
import java.util.Scanner;

public class Main {
	private static int unchange(String s) { // ์ˆซ์ž -> ๋ฌธ์ž ๋ณ€ํ™˜ ๋ฉ”์„œ๋“œ
		String[] amho = { "000000", "001111", "010011", "011100", "100110", "101001", "110101", "111010" };
		int idx = -1; // ๊ธฐ๋ณธ ๊ฐ’ -1
		
		// ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์•”ํ˜ธ์™€ ๋น„๊ตํ•ด์„œ ์ฐจ์ด ์นด์šดํŠธ 
		for (int j = 0; j < amho.length; j++) {
			int diff_count = 0;
			for (int j2 = 0; j2 < 6; j2++) {
				if (amho[j].charAt(j2) != s.charAt(j2)) {
					diff_count++;
				}
			}
			if (diff_count <= 1) { // ์ฐจ์ด๊ฐ€ 1์ดํ•˜๋ฉด ์ฐพ์€ ๊ฒƒ
				idx = j;
				break;
			}
		}
		return idx;
	}

	public static void main(String[] args) throws FileNotFoundException {
		// input
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String numbers = sc.next();
		StringBuilder sb = new StringBuilder();

		// ์ˆซ์ž๋ฅผ ๋ฌธ์ž๋กœ๋ณ€ํ™˜, ๋ณ€ํ™˜ ์‹คํŒจ ์‹œ ์‹คํŒจ์‹œ์  ์ถœ๋ ฅ ํ›„ ์ข…๋ฃŒ
		for (int i = 0; i < n; i++) {
			// ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์˜ ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜
			// ๋ณ€ํ™˜ ๋ถˆ๊ฐ€ ์‹œ -1 ๋ฐ˜ํ™˜
			int idx = unchange(numbers.substring(i * 6, i * 6 + 6)); // ๋ฌธ์ž์—ด์„ 6๊ฐœ ๋‹จ์œ„๋กœ ์ž˜๋ผ์„œ ๋ณด๋ƒ„
			
			if (idx != -1) {
				sb.append((char) (idx + 'A'));
			} else {
				sb = new StringBuilder();
				sb.append(i+1);
				break;
			}
		}
		System.out.println(sb);
		sc.close();
	}
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • main ๋ฉ”์„œ๋“œ์—์„œ ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์„ 6๋ฌธ์ž ๋‹จ์œ„๋กœ ์ž˜๋ผ unchange() ๋ฉ”์„œ๋“œ๋กœ ๋ณด๋‚ด ์ธ๋ฑ์Šค๋ฅผ ๋ฐ›๋Š”๋‹ค.
    • ์ธ๋ฑ์Šค๊ฐ€ -1์ด๋ฉด ๋ณ€ํ™˜ ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋ฏ€๋กœ ํ˜„์žฌ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
    • ์ธ๋ฑ์Šค๊ฐ€ 0 ์ด์ƒ์ด๋ฉด, ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด ์ถœ๋ ค์— ํฌํ•จํ•œ๋‹ค.
  • unchage ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์•„, ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • 8๊ฐ€์ง€ ๋ฌธ์ž์˜ ์ด์ง„์ˆ˜ ๋ฌธ์ž์—ด๊ณผ์˜ ์ฐจ์ด์ ์ด 1์ดํ•˜์ธ ๊ฒฝ์šฐ ๊ทธ ๋ฌธ์ž์—ด์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ๋น„๊ต๋ฌธ์„ ์ „๋ถ€ ๋Œ์•˜์–ด๋„ ์ฐจ์ด๊ฐ€ 2์ด์ƒ ๋ฟ์ด์—ˆ๋‹ค๋ฉด ๋ณ€ํ™˜ ๋ถˆ๊ฐ€๋Šฅ์ด๋ฏ€๋กœ -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • unchange ๋ฉ”์„œ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๋ฌธ์ œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
    • ๋ฉ”์„œ๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์ „์—๋Š” System.exit(0)์œผ๋กœ ์ข…๋ฃŒ์‹œ์ผฐ๋Š”๋ฐ, returnํ˜•์‹์ด ๋” ๊น”๋”ํ•œ ๊ฒƒ ๊ฐ™์•„ ๋ฆฌํŒฉํ† ๋ง ์„ฑ๊ณต์ด๋‹ค.

728x90