-
[백준/Java] 1110번 - 더하기 사이클Problem Solving 2022. 3. 26. 21:50
미치는 줄 알았다. 알고리즘과 수식에는 아무 문제가 없는데 계속 틀렸다니, 멘탈을 거의 놓기 직전까지 갔다.
문제는 이렇다.
예를 들어 숫자 26이 주어지면 이 수의 1의 자리인 6과, 2와 6을 더한 수인 8을 합쳐 68을 만든다. 이것이 한 사이클이다. 새로 얻은 수로 이 과정을 몇 번 반복해야 처음 주어진 수와 같은 수가 나오는 지 구하는 문제이다.
문제풀이 질문란에 보니 많은 사람들은 받은 수를 문자열배열에 집어넣어 인덱스로 접근한 다음 정수로 변환하여 푸는 듯 했다.
나는 더욱 간단하게 몫/나머지 연산자를 이용했다.
import java.io.*; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int N = Integer.parseInt(br.readLine()); int copy = N; // 처음 입력된 수 복사 int count = 0; // 횟수 세기 위한 변수 while (true) { N = (((N%10)*10) + (((N/10) + (N%10))%10)); // 주어진 수의 1의 자리를 10의 자리로(10을 곱해서) // 주어진 수의 1의 자리, 10의 자리를 합한 값의 1의 자리 count++; // 1 사이클 증가 if (N == copy) { break; // 결과값이 원래 수와 같으면 반복문 탈출 } } bw.write(count); // 출력 br.close(); bw.close(); } }
이랬는데 계속 틀렸단다!!
한 시간 이상을 계속 헤멨다.
혹시 내가 메소드를 잘못 썼나?? 싶어서 출력을 System.out.println() 메소드로 바꿔서 해 보았다.
그 결과
드디어 맞았다...
System.out.println() 메소드는 출력이 끝나면 자동으로 줄을 바꾸는데, 혹시 BufferedWriter 클래스의 write() 메소드를 쓸 때 줄바꿈을 안 넣어서 그랬나?? 하고 줄바꿈 이스케이프 시퀀스(\n)를 추가했더니
맞았다...
이것 때문에 틀린 것이었다...
이 조그만 것 하나 때문에 장장 한시간을 고뇌했다니 참 허무하다.
한 시간 들인 것에 비하면 아무것도 아닌 것 같지만, 어쨌든 이렇게 배웠으니 앞으로는 같은 실수는 하지 않겠지 뭐
'Problem Solving' 카테고리의 다른 글
[백준/Java] 2562번 - 최댓값 및 그 인덱스 찾기 (0) 2022.03.26 [백준/Java] 10818번 - 숫자열에서 최소/최대값 찾기 (0) 2022.03.26 [백준/Java] 10951번 - EOF (0) 2022.03.26 [백준/Java] 10952번 - A+B에서 모두 0일 때 연산 중단 (0) 2022.03.26 [백준/Java] 10871번 - x보다 작은 수 출력 (0) 2022.03.26