덧셈을 통한 String의 결합
charAt() 메소드를 통한 String의 특정값 추출
length()를 통한 스트링 길이 구하기
위의 3가지를 이용해 String, int, char를 오가며 자료를 굴리는 연습이었다.
의외의 복병은 BufferedWriter 였는데...
지금까지 모든 문제는 StringBuffer 객체를 출력했기에 몰랐다.
BufferedWriter의 write 메소드의 경우 여러 타입의 파라메타를 받도록 오버로딩 되어있는데,
int 값을 넣을 경우 single character 를 write 한다.
따라서 String 값으로 변환해줘야 한다.
지저분하고 복잡한 풀이결과이지만..
아직은 결과를 만들어내는 것에 집중하는 것이 더 나은 효율을 보이는 구간에 있다는 판단이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//최초로 주어진 숫자를 original에 보관한다
String original = br.readLine();
//몇 번 만에 original로 회귀하는지 셀 count 준비
int count = 0;
//1자리 숫자일 경우 앞에다 0을 추가해준다
if(original.length()==1) original = "0" + original;
//계속해서 변화하는 값은 target에서 처리한다
String target = original;
//original과 target이 일치할 때까지 반복한다.
while(true) {
//1자리 숫자가 될 경우 앞에 0을 추가한 뒤 작업을 시작한다.
if(target.length()==1) target = "0" + target;
//2자리 숫자인 target의 10의자리 수와 1의자리 수를 더한 뒤 result에 String으로 저장한다
String result = Integer.parseInt(target.charAt(target.length()-2)+"")
+ Integer.parseInt((target.charAt(target.length()-1)+"")) + "";
//횟수를 센다
count++;
//original과 비교할 타겟을, (덧셈을 진행한 숫자의 1의자리수+덧셈 결과의 1의자리수)의 String 결합으로 만든다.
target = ""+target.charAt(target.length()-1) + result.charAt(result.length()-1);
//만들어진 target이 original과 같으면 중단한다.
if(target.equals(original)) break;
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(count+"");
bw.flush();
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
|
cs |
https://www.acmicpc.net/problem/1110
'Algorithm' 카테고리의 다른 글
K번째 수 (프로그래머스, Java, Level1) (0) | 2020.07.07 |
---|---|
Selection Sort 구현해보기 (0) | 2020.07.06 |
N 찍기 : 백준 2741번 - Scanner&System.out VS BufferedReader&BufferedWriter 메모리, 소요시간 비교 (0) | 2020.06.06 |
빠른 A+B : 백준 15552번 - BufferedReader/Writer를 활용한 빠른 입출력 (0) | 2020.06.06 |
가끔씩 한 문제씩 알고리즘 문제풀이를 해보려고 한다 (2) | 2020.05.28 |