Hayden's Archive

[알고리즘] 백준 10951번 : A+B -4 / 백준 1110번 : 더하기 사이클 본문

Algorithm

[알고리즘] 백준 10951번 : A+B -4 / 백준 1110번 : 더하기 사이클

_hayden 2020. 5. 31. 10:38

알고리즘 문제 출처 : 백준 https://www.acmicpc.net/problem

 

10951번: A+B - 4

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

내가 작성한 코드

문제를 풀다가 입력이 끝났다는 것을 어떻게 받아야 할지 몰라서 처음에 당황했다. 이런 걸 EOF 처리라고 하는데 자바에서는 어떻게 EOF를 처리하는지 서치해보았고 https://mygumi.tistory.com/236 를 참고하여 코드를 작성했다. 자바에서는 입력값에 대하여 EOF 처리를 할 때 Scanner 참조변수의 hasNextInt() 메소드를 활용할 수 있다. 자바의 EOF 처리를 기억하기 위해 코드를 포스팅한다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNextInt()) {
			int a = sc.nextInt();
			int b = sc.nextInt();
			System.out.printf((a+b)+"\n");
		}
		
	}
}

 


알고리즘 문제 출처 : 백준 https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

내가 작성한 코드

어려운 문제는 아닌데 처음에 변수 설정을 잘못해서 계속 런타임 에러가 계속 떴다. 실수하지 않도록 코드를 꼼꼼히 살피고 디버깅에 더 힘써야겠다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int temp = n;
		int count = 0;
		int remainder = 0;
		while(true) {
			remainder = temp%10;
			temp = ((temp/10)+remainder)%10 + remainder*10;
			count += 1;
			if(temp==n) break;
		}
        System.out.println(count);
	}
}