알고리즘

백준 #1065 java 2023.01.13

chaewonni 2023. 1. 13. 02:40

다시봐도 내가 너무 한심하게 풀었던 문제.... 1000보다 작으니까 세자리 자연수만 확인했으면 됐는데 조건을 잘 안보고 어렵게 생각해서 푸는데 진짜 오래걸렸다..... (근데 풀고 나서도 답이 자꾸 틀렸음^^...)

package boj_basic.step5;

import java.util.Scanner;

public class Q1065_2 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int cnt = 0;
		
		for(int i = 1; i<=N; i++) {
			String s = Integer.toString(i);
			int num = 0;
			int cntt = 0;
			for(int j = 0; j<s.length(); j++) {
				if(j+1<s.length() && j-1>=0) {
					if((s.charAt(j+1)-'0')-(s.charAt(j)-'0')==(s.charAt(j)-'0')-(s.charAt(j-1)-'0')); 
						cntt++;
				}
			}
			if(cntt == s.length()-2)
				cnt++;
			else if(s.length()==1||s.length()==2)
				cnt++;
		}
		
		System.out.println(cnt);
		
	}

}

정말 한심한 틀린 답안..^^

진짜 몇시간동안 붙잡고 있다가 조건 다시 보니까 1000보다 작다?!?!?!ㅎㅎ... 조건만 잘 봤으면 10분컷 할 수 있었을 문제다.

 

package boj_basic.step5;

import java.util.Scanner;

public class Q1065_3 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int cnt = 0;
		
		for(int i = 1; i<=N; i++) {
			int num = 0;
			if(i>99) {
				if((i%100/10)-(i/100)==(i%100%10)-(i%100/10)) {
					cnt++;
				}
			}
			else
				cnt++;
		}
		
		System.out.println(cnt);
		
	}

}

고쳐서 잘 풀었다.ㅎㅎ 

두자리수 이하는 무조건 cnt를 하나씩 증가시켜주고, 세자리수는 if조건문에 부합할 때만 cnt를 하나씩 증가시켜주면 쉽게 풀린다!

 

문제 풀 땐 조건도 정확하게 보기!