๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 2998๋ฒˆ: 8์ง„์ˆ˜(๋ฌธ์ž์—ด, ๊ตฌํ˜„)

by ์ฃผ๋ฐœ2 2020. 3. 27.
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/2998

 

2998๋ฒˆ: 8์ง„์ˆ˜

๋ฌธ์ œ ์ฐฝ์˜์ด๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ง„๋ฒ•์„ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋‹ค. ์ฐฝ์˜์ด๋Š” ์–ด์ œ 2์ง„๋ฒ•์„ ๋ฐฐ์› ๊ณ , ์˜ค๋Š˜์€ 8์ง„๋ฒ•์„ ๋ฐฐ์› ๋‹ค. ์ด์ œ, 2์ง„๋ฒ• ์ˆ˜๋ฅผ 8์ง„๋ฒ• ์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ฐฝ์˜์ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 2์ง„์ˆ˜์˜ ๊ธธ์ด๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์งˆ ๋•Œ ๊นŒ์ง€ ์ˆ˜์˜ ์•ž์— 0์„ ๋ถ™์ธ๋‹ค. ๊ทธ ๋‹ค์Œ, 3์ž๋ฆฌ์”ฉ ๊ทธ๋ฃน์„ ๋‚˜๋ˆˆ๋‹ค. ์•„๋ž˜์˜ ํ‘œ๋ฅผ ์ฐธ๊ณ ํ•ด 8์ง„์ˆ˜๋กœ ๋ฐ”๊พผ๋‹ค. 2์ง„์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฐฝ์˜์ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด 8์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 000 0 001 1 010

www.acmicpc.net

์ฝ”๋“œ

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		String str = scan.next();	// 2์ง„์ˆ˜(100์ž๋ฆฌ ์ด๋‚ด)
		String result = "";	// 8์ง„์ˆ˜
		while(str.length()%3 != 0) {
			str = "0" + str;
		}
		
		for(int i=0; i<str.length()-1; i+=3) {
			/*
			 * 2์ง„์ˆ˜  1 1 0 ์˜ ๊ฒฝ์šฐ 
			 * 8์ง„์ˆ˜  (1*4) + (1*2) + (0*1) ๋กœ ๋‚˜ํƒ€๋ƒ„.
			 */
			int a1 = str.charAt(i) - '0';
			int a2 = str.charAt(i+1) - '0';
			int a3 = str.charAt(i+2) - '0';
			result += Integer.toString((a1*4) + (a2*2) + (a3*1));
		}
		System.out.println(result);
		scan.close();
	}

}

ํ’€์ด

๋ฌธ์ œ ์กฐ๊ฑด 2์ง„์ˆ˜ -> 8์ง„์ˆ˜๋กœ ๋ณ€ํ™˜.

 

 1. 2์ง„์ˆ˜์˜ ๊ธธ์ด๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์งˆ ๋•Œ ๊นŒ์ง€ ์ˆ˜์˜ ์•ž์— 0์„ ๋ถ™์ธ๋‹ค.

 2. ๊ทธ ๋‹ค์Œ, 3์ž๋ฆฌ์”ฉ ๊ทธ๋ฃน์„ ๋‚˜๋ˆˆ๋‹ค.

 3. ํ‘œ๋ฅผ ์ฐธ๊ณ ํ•ด 8์ง„์ˆ˜๋กœ ๋ฐ”๊พผ๋‹ค.

 

๋‚˜๋Š” 1๋ฒˆ ๋ณด๊ธฐ๊ฐ€ ๋ฌด์Šจ ๋œป์ธ์ง€ ์ดํ•ด๊ฐ€ ์•ˆ๋ผ์„œ ๊ณ„์†๋ดค๋‹ค.

๊ทผ๋ฐ ๊ทธ๋ƒฅ ๊ทธ๋Œ€๋กœ๋‹ค.. 2์ง„์ˆ˜์˜ ๊ฐฏ์ˆ˜(๊ธธ์ด)๋ฅผ 3์˜ ๋ฐฐ์ˆ˜๋กœ ๋งž์ถ”๊ณ , 3์ž๋ฆฌ์”ฉ ๋Š์–ด์„œ ๊ณ„์‚ฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

2์ง„์ˆ˜ = 1 1 0 1 ์ด๋ผ๋Š” ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด, 3์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋ ๋•Œ๊นŒ์ง€ 0์„ ๋„ฃ์–ด์ค€๋‹ค

 

0   0   1   1   0   1 

 

3์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜๋ฉด 3์ž๋ฆฌ์”ฉ ๋Š๋Š”๋‹ค.

 

0   0   1   1   0   1 

4   2   1   4   2   1

๊ทธ ํ›„ ๊ฐ ์ž๋ฆฌ๋ณ„๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.

 

(0*4) + (0*2) + (1*1) | (1*4) + (0*2) + (1*1)

์ตœ์ข…์ ์œผ๋กœ 8์ง„์ˆ˜ = 1 5 ๊ฐ€ ๋œ๋‹ค.

* ์ตœ๋Œ€ 100์ž๋ฆฌ ์ด๋ฏ€๋กœ String์œผ๋กœ ์ž…๋ ฅ๋ฐ›์•„์•ผ ํ•œ๋‹ค.

* int <-> String ํ˜•๋ณ€ํ™˜๋งŒ ์œ ์˜ํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€