728x90
반응형
https://www.acmicpc.net/problem/1110
나는 이 문제를 String으로 풀었는데 다른 분들은 정수로 변환해서 푸셨다.
근데 String으로 풀었을 때 로직을 잘못짜면 0이 입력됐을 때 00으로 처리해서 while문을 못빠져나오기도 하더라,,
(내 경험담ㅠ)
정수로 풀면 뭔가 오래 걸릴 문제는 아니었는데 괜히 String으로 멋지게 풀어보려다가 디버깅하다가 시간 많이 걸린 문제ㅠㅡㅠ
[내가 String으로 푼 문제]
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String origin = br.readLine();
int cycle = 0;
String newNum = origin;
while(true){
if(newNum.length()==1) {
cycle++;
newNum = newNum+newNum;
if(newNum.charAt(0) == '0')
newNum = Character.toString(newNum.charAt(1));
}
else{
cycle++;
newNum = Character.toString(newNum.charAt(1))+Integer.toString((newNum.charAt(0)-'0'+newNum.charAt(1)-'0')%10);
if(newNum.charAt(0) == '0')
newNum = Character.toString(newNum.charAt(1));
}
if(origin.equals(newNum))
break;
}
System.out.println(cycle);
}
}
[정수로 푼 문제]
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int origin = Integer.parseInt(br.readLine());
int cycle = 0;
int newNum = origin;
while(true){
newNum = newNum%10*10 + ((newNum/10 +newNum%10)%10);
cycle++;
if(origin == newNum)
break;
}
System.out.println(cycle);
}
}
728x90
반응형
'알고리즘 (for 코딩테스트) > 백준_자바 (Java)' 카테고리의 다른 글
[Java 자바] 백준 알고리즘 2609번 답 : 최대공약수와 최소공배수 | 유클리드 알고리즘 | 유클리드 호제법 (0) | 2021.09.10 |
---|---|
[Java 자바] 백준 알고리즘 2839번 답 : 설탕 배달 (0) | 2021.09.09 |
[Java 자바] 백준 알고리즘 2775번 답 : 부녀회장이 될테야 (0) | 2021.09.04 |
[Java 자바] 백준 알고리즘 1920번 답 : 수 찾기 (0) | 2021.09.04 |
[Java 자바] 백준 알고리즘 15829번 답 : Hashing (1) | 2021.09.03 |
최근댓글