목차
문제 : boj23813
필요 알고리즘
- 구현, 문자열, 수학
- 문자열로 문제에서 제시된대로 구현해주는 문제이다.
※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다.
풀이
문제 제한이 짧아서 그냥 문자열 자체로 자르고 붙이고 Integer.parseInt로 정수로 변경해주면서 구현해도 상관없다. 내 경우엔 숫자로 바꿔서 계산했다. 우선 mult는 입력으로 들어온 숫자의 자리수-1 만큼 0이 붙은 숫자이다. 예를들어 "12345"라면 mult=10000 이다.
그럼 N의 회전은 N/10 + N%10 * mult 로 가능하다. N/10 : 1의 자리수를 없앰, N%10 * mult : 1의 자리수를 맨 왼쪽으로 옮김. 그렇게 회전한 수가 N과 동일하지 않은 동안 더해주면 된다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws Exception {
new Main().solution();
}
private void solution() throws Exception {
String str = br.readLine();
int mult = 1;
for (int i = 0; i < str.length()-1; i++) {
mult *= 10;
}
int n = Integer.parseInt(str);
long sum = 0;
int next = n;
do {
sum += next;
next = next/10 + next%10*mult;
} while (next != n);
System.out.println(sum);
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 1205 - 등수 구하기 (java) (0) | 2023.04.05 |
---|---|
[파이선] 백준 1793 - 타일링 (python) (0) | 2023.04.04 |
[자바] 백준 2033 - 반올림 (java) (0) | 2023.04.02 |
[자바] 백준 25904 - 안녕 클레오파트라 세상에서 제일가는 포테이토칩 (java) (0) | 2023.03.27 |
[자바] 백준 10471 - 공간을 만들어 봅시다 (java) (0) | 2023.03.17 |
댓글