-
[java] 백준 알고리즘 1110번 더하기 사이클 풀이알고리즘/백준 알고리즘 2018. 5. 17. 15:27
다른 사람들 소스를 보면 다들 쉽게 쉽게 풀었는데,
난 항상 왜 이렇게 어렵게 푸는지 모르겠다. ㅠㅠ
* 풀이소스
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657public class Baekjoon1110 {public static void main(String[] args) throws NumberFormatException, IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));String n = br.readLine(); // 입력받을 정수(문제 속의 N)int intN = Integer.parseInt(n); // String으로 받기 때문에 int로 변환된 Nint cycle = 0;int newNum = 0;/* 문제처럼 10보다 작으냐 크냐에 계산이 달라진다. */if(intN<10) { // 10보다 작은 경우,newNum = intN + intN; // 10보다 작을 경우, 사이클 1개는 지나야하며, 사이클 하나가 지난 값은 주어진 n값을 2번 더한 것과 같다.String stringNewNum = String.valueOf(newNum);int firstNum = intN; // 계산 속의 + 연산 사이에 오른쪽에 위치할 수cycle = 1; // 위의 설명대로 사이클 1개 추가while(!n.equals(stringNewNum)) { // 입력한 값과 같아질 때까지 loopstringNewNum = String.valueOf(newNum);int secondNum = Integer.parseInt(stringNewNum.substring(stringNewNum.length()-1)); // 사이클 중 계산되고 난 값(= 등호 오른쪽 값)의 오른쪽에 있을 숫자if(firstNum == 0) {stringNewNum = String.valueOf(secondNum); // 자리수가 1개일 경우에는 그대로 대입.}else {stringNewNum = String.valueOf(firstNum)+String.valueOf(secondNum); // + 연산의 오른쪽 수, 계산된 후의 오른쪽 수를 합친다.}newNum = firstNum + secondNum; // 만들어질 수firstNum = secondNum; // 등식(=)으로 나온 수의 오른쪽에 있는 수는 다음 사이클에서 + 연산 값의 오른쪽 수가 된다.cycle++; // 1번 연산될 때마다 사이클도 자동 업}}else {newNum = Character.getNumericValue(n.charAt(0)) + Character.getNumericValue(n.charAt(1)); // 두자릿수라서 바로 계산.String stringNewNum = String.valueOf(newNum); /* 원리는 위와 같다. */int firstNum = Character.getNumericValue(n.charAt(1));while(!n.equals(stringNewNum)) {stringNewNum = String.valueOf(newNum);int secondNum = Integer.parseInt(stringNewNum.substring(stringNewNum.length()-1));stringNewNum = String.valueOf(firstNum)+String.valueOf(secondNum);newNum = firstNum + secondNum;firstNum = secondNum;cycle++;}}bw.write(String.valueOf(cycle));bw.flush();}}cs '알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[java] 백준 알고리즘 1152번 단어의 개수 풀이 (0) 2018.05.17 [java] 백준 알고리즘 4673번 셀프 넘버 풀이 (0) 2018.05.17 [java] 백준 알고리즘 4344번 평균은 넘겠지 풀이소스 (0) 2018.05.16 [java] 백준 알고리즘 15552번 빠른 A+B 풀이소스 (0) 2018.05.16 [java] 백준 알고리즘 11721번 열 개씩 끊어 출력하기 풀이소스 (0) 2018.05.16