Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프론트엔드
- Git
- github
- 알고리즘
- where
- order by
- String클래스
- html
- 데이터 조회
- sql문
- JavaScript
- mybatis
- 입출력
- 프로그래머스 sql 고득점 kit
- 예외처리
- 개발자
- 형변환
- 클래스
- Linux
- 프로그래밍
- select
- 자바스크립트
- 스프링
- DML
- Java
- 프로그래머스 SQL
- StringBuilder
- 백준
- scanner
- MySQL
- 정보처리기사필기요약
- 백엔드
- 메서드
- select문
- 자바
- SQL
- BufferedReader
- 웹개발
- 정보처리기사
- 리눅스
Archives
- Today
- Total
ToBe끝판왕
[ 알고리즘 ] 백준 1110번 문제 - 자바( JAVA ) 본문
반응형
주의사항
※ 백준에서 정해진 출력 형식을 출력해야 한다.
※ 백준 알고리즘에서는 클래스명을 Main으로 해주어야 한다.
백준 1110번 문제
백준 알고리즘의 단계별 문제 풀기
3단계 < 반복문 >
▶ 해당 문제 링크
https://www.acmicpc.net/problem/1110
코딩 하기
1) Scanner 사용
import java.util.Scanner;
public class Main {
public static void main( String[] args ) {
Scanner sc = new Scanner( System.in );
int N = sc.nextInt();
sc.close();
int count = 0;
int copy = N;
while( true ) {
N = ((N % 10) * 10) + (((N / 10) + (N % 10)) % 10);
count++;
if( copy == N ) {
break;
}
}
System.out.println( count );
}
}
2) BufferedReader 사용
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main( String[] args ) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
int N = Integer.parseInt( br.readLine() );
int count = 0;
int copy = N;
do {
N = ((N % 10) * 10) + (((N / 10) + (N % 10)) % 10);
count++;
} while( copy != N );
System.out.println( count );
}
}
문제 해결
수학적으로 접근하여 푼다.
N 이라는 정수가 주어진다면, N의 1의 자릿수는 새로운 수의 10의 자리로, N의 1의 자릿수와 10의 자릿수를 더한 값의
1의 자릿수는 새로운수의 1의 자리로 가면 된다. ( 만약 N이 한자리 정수라면 앞에 0을 붙여 더한다. )
먼저 주어진 수를 N, 새로운 수를 T라고 가정
N의 일의 자릿수는 새로운 T의 십의 자리로 간다.
// T의 십의 자릿수
T = (N % 10) * 10
두개를 더한 뒤, 10으로 나눈 나머지가 N의 각 자릿수의 합의 일의 자릿수가 되므로
T의 일의 자릿수가 된다.
// T의 일의 자릿수
T = ((N / 10) + (N % 10)) % 10
최종적으로 새로운 수 T
T = ((N % 10) * 10) + (((N / 10) + (N % 10)) % 10)
반복문에 적용하면 ( T도 N값이 바뀌는것이므로 N으로 한다. )
while(true){
N = ((N % 10) * 10) + (((N / 10) + (N % 10)) % 10);
}
• 처음 입력값을 복사한 변수 copy
• 반복문이 몇번 반복 되었는지 세어 변수 count에 넣는다.
• 복사한 변수값이 처음 입력값 copy 와 같아지면 반복문을 종료한다.
int count = 0;
int copy = N;
while( true ) {
N = ((N % 10) * 10) + (((N / 10) + (N % 10)) % 10);
count++;
if( copy == N ) {
break;
}
}
System.out.println( count );
}
반응형
'■ 알고리즘 > 백준 JAVA' 카테고리의 다른 글
[ 알고리즘 ] 백준 2562번 문제 - 자바( JAVA ) (0) | 2022.06.08 |
---|---|
[ 알고리즘 ] 백준 10818번 문제 - 자바( JAVA ) (0) | 2022.05.31 |
[ 알고리즘 ] 백준 10951번 문제 - 자바( JAVA ) (0) | 2022.05.27 |
[ 알고리즘 ] 백준 10871번 문제 - 자바( JAVA ) (0) | 2022.05.27 |
[ 알고리즘 ] 백준 2439번 문제 - 자바( JAVA ) (0) | 2022.05.26 |
Comments