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

[๋ฐฑ์ค€] 1065๋ฒˆ: ํ•œ์ˆ˜(์™„์ „ํƒ์ƒ‰, brute force)

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

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

 

1065๋ฒˆ: ํ•œ์ˆ˜

์–ด๋–ค ์–‘์˜ ์ •์ˆ˜ X์˜ ์ž๋ฆฌ์ˆ˜๊ฐ€ ๋“ฑ์ฐจ์ˆ˜์—ด์„ ์ด๋ฃฌ๋‹ค๋ฉด, ๊ทธ ์ˆ˜๋ฅผ ํ•œ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ๋“ฑ์ฐจ์ˆ˜์—ด์€ ์—ฐ์†๋œ ๋‘ ๊ฐœ์˜ ์ˆ˜์˜ ์ฐจ์ด๊ฐ€ ์ผ์ •ํ•œ ์ˆ˜์—ด์„ ๋งํ•œ๋‹ค. N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ํ•œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 

www.acmicpc.net

์ฝ”๋“œ

import java.util.Scanner;

public class Main {
	public static boolean check(int num) {
		boolean flag = false;
		String str = Integer.toString(num);
		int first = str.charAt(0) - '0';// ๋ฐฑ์˜์ž๋ฆฌ
		int mid = str.charAt(1) - '0';	// ์‹ญ์˜์ž๋ฆฌ
		int last = str.charAt(2) - '0';	// ์ผ์˜์ž๋ฆฌ
		if((first + last) == (mid * 2)) {
			flag = true;
		}
		return flag;
	}

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		int count = 0;
		if(N<100) {
			count = N;
		}
		else if(N>100 && N<=110){
			count = 99;
		}
		else {
			count += 99;
			for(int i=111; i<=N; i++) {
				if(check(i))
					count ++;
			}
		}
		
		System.out.println(count);
		scan.close();
	}
}

ํ’€์ด

์ฃผ์–ด์ง„ ์ˆซ์ž์˜ ๊ฐ ์ž๋ฆฌ๊ฐ€ ๋“ฑ์ฐจ์ˆ˜์—ด์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ,

์ •์ˆ˜ X์˜ ์ž๋ฆฌ์ˆ˜๊ฐ€ ๋“ฑ์ฐจ์ˆ˜์—ด์„ ์ด๋ฃฌ๋‹ค๋Š”๊ฒŒ ๋ญ”๋œป์ธ์ง€ ๋ชฐ๋ผ์„œ ํ•œ์ฐธ์„ ์‚ดํŽด๋ดค๋‹ค ...

 

์˜ˆ๋ฅผ๋“ค์–ด, 123์ธ ๊ฒฝ์šฐ -> +1 ์ธ ๋“ฑ์ฐจ์ˆ˜์—ด์ด๋‹ค.

135์ธ ๊ฒฝ์šฐ -> +2์ธ ๋“ฑ์ฐจ์ˆ˜์—ด์ด๋‹ค.

126์ธ ๊ฒฝ์šฐ -> ๋“ฑ์ฐจ์ˆ˜์—ด์ด ์•„๋‹ˆ๋‹ค.

100 ๋ฏธ๋งŒ์˜ ์ˆซ์ž๋Š” ์ „๋ถ€ ๋“ฑ์ฐจ์ˆ˜์—ด์ด๋‹ค. (1 ~ 99๊นŒ์ง€๋Š” ์ „๋ถ€ ๋“ฑ์ฐจ์ˆ˜์—ด)

๊ทธ๋ฆฌ๊ณ , 100๋ถ€ํ„ฐ 110๊นŒ์ง€๋Š” ์ „๋ถ€ ๋“ฑ์ฐจ์ˆ˜์—ด์ด ์•„๋‹ˆ๊ณ ,

111๋ถ€ํ„ฐ๋Š” ๋“ฑ์ฐจ์ˆ˜์—ด์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ N์ด 100๋ฏธ๋งŒ์ผ๋•Œ, 100~110์ผ๋•Œ, 110๋ณด๋‹ค ํด ๋•Œ ์ด 3๊ฐ€์ง€์˜ ์ผ€์ด์Šค๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค.

 

๋“ฑ์ฐจ์ˆ˜์—ด์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ฃผ์–ด์ง„ ์ˆซ์ž์˜ ์ž๋ฆฌ์ค‘ ์ฒซ๋ฒˆ์งธ, ์„ธ๋ฒˆ์งธ์˜ ํ•ฉ์ด ๋‘๋ฒˆ์งธ ์ˆซ์ž์˜ 2๋ฐฐ๊ฐ€ ๋˜๋ฉด ๋œ๋‹ค.

 

123 => (1+3) = (2*2) ์ด๋ฏ€๋กœ ๋“ฑ์ฐจ์ˆ˜์—ด,

357 => (3+7) = (5*2) ์ด๋ฏ€๋กœ ๋“ฑ์ฐจ์ˆ˜์—ด,

531 => (5+1) = (3*2) ์ด๋ฏ€๋กœ ๋“ฑ์ฐจ์ˆ˜์—ด์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ๊ฐ ์ž๋ฆฟ์ˆ˜๊ฐ€ ๋“ฑ์ฐจ์ˆ˜์—ด์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฉ”์†Œ๋“œ check()๋ฅผ ๊ตฌํ˜„ํ•ด, ๋“ฑ์ฐจ์ˆ˜์—ด์ผ๊ฒฝ์šฐ ++๋ฅผ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

* boolean check() ๋ฉ”์†Œ๋“œ

check ๋ฉ”์†Œ๋“œ์—์„œ๋Š”, ์ฃผ์–ด์ง„ ์ •์ˆ˜๋ฅผ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด String ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ–ˆ๋‹ค.

๊ทธ ํ›„ ๊ฐ ์ž๋ฆฟ์ˆ˜์—์„œ '0'์„ ๋นผ์ฃผ๋ฉด ๊ฐ ์ž๋ฆฟ์ˆ˜์˜ ๊ฐ’์ด ๋œ๋‹ค.

๊ทธ ํ›„ ์ฒซ๋ฒˆ์งธ + ์„ธ๋ฒˆ์งธ์˜ ๊ฐ’์ด ๋‘๋ฒˆ์งธ*2๊ฐ€ ๋˜๋ฉด ๋“ฑ์ฐจ์ˆ˜์—ด์ด๋ฏ€๋กœ, flag๋ฅผ true๋กœ ์ €์žฅํ•œ๋‹ค.

 

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€

๐Ÿ”HALO