백준 1110 - java ) 더하기 사이클 (*)
2021. 8. 24. 18:46ㆍ코딩/Python
내 사고과정
이런 느낌인건가.. Scanner 클래스를 이용하여 사용자로부터 정수 2개를 입력받고
두번째로 입력한 정수와 + 덧셈 결과에서 일의 자리만 붙여 새로운 더하기 수를 만들자...인가?
새롭게 더해서 만들어진 수는 문자열로 처리를 해야 할 것 같았다.
내 실행코드
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()) { // hasNext()도 상관 없음. 정수를 입력받고자 했으니 nextInt()가 더 가독성 좋음.
int a = sc.nextInt();
int b = sc.nextInt();
int c=0; // 덧셈 결과값
System.out.println(b+c);
}
sc.close();
}
}
내 실행결과
2 6
6
왜 두번째 숫자만 나오는 걸까...
수정된 코드
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if(n<10) {
n*=10; // 입력한 수가 10 미만이면 n에 10을 곱해준다.
}
int left,right,cnt=0, sum=n; // left,right 두 자리 수를 각각 더해야 하므로 변수 선언 + 몇 사이클을 도는지 cnt 변수 선언 + 새로운 수 비교 위해 sum 선언 + 초기값 n
while(true) { // while문을 true로 반복시킨다.
left=sum/10; // left가 두 자리수 중 첫번째. 즉 10의 자리수이므로 10으로 나누고 몫을 전달
right=sum%10; // right는 1의 자리 수 이므로 10으로 나눴을 때 나머지를 전달
sum=left+right; // sum에 left와 right를 더한다.
sum=right*10+sum%10; //2+6=8와 같은 새로운 수는 right를 10의 자리 수로, 8은 일의 자리 수로 만드므로 right에 10을 곱하고 sum에 10으로 나누고 나머지 수를 더한다.
cnt++; // 한 사이클 돌고 cnt값을 올려준다.
if(sum==n) break; // 사이클을 끝내고 새로운 수 값이 입력한 값과 같으면 break문으로 while문 탈출
}
System.out.println(cnt); // while문이 끝나고 cnt 출력
}
}
수정된 실행결과
55
3
생각보다 어려운 문제였다.. 내가 처음에 생각했던 사고과정이랑 많이 달랐던 것 같다.
'코딩 > Python' 카테고리의 다른 글
파이썬 인터프리터 사용하기 + 간단한 출력문 (0) | 2021.08.28 |
---|---|
닥터 앤서, 한국형 AI의사 (0) | 2021.08.27 |
백준 10951 - java ) A+B-4 (1) | 2021.08.24 |
백준 10952 - java ) A+B-5 (0) | 2021.08.24 |
백준 10871 - java ) X보다 작은 수 (0) | 2021.08.24 |