본문 바로가기

Coding Test/Problem Number

[Java] 3의 배수 [1769번]

https://www.acmicpc.net/problem/1769

  • 예제 입력1
1234567
  • 예제 출력1
3
NO

  • 문제 접근
    • 알고 있는 3의 배수는 한 자리로 3, 6, 9 밖에 모름
    • 즉, X → Y로 변경할 때 10보다 작은 수가 될 때까지 변경을 해야한다는 의미
    • 출력
      • 10보다 작은 Y가 될 때까지 몇 번의 변경이 일어났는지 출력
      • 3의 배수인지 아닌지 YES, NO로 출력
  • 문제 해결
    • 10보다 클 경우 각 자리수를 모두 더하고 작아질 때까지 반복
    • 숫자인 형태로 계산하기 보다 String의 CharAt() 메서드를 이용하는 것이 더 효율적일 것으로 생각 됨
  • 기존 풀이 [메모리 : 20100KB / 시간 : 228ms]
public static void main(String[] args) throws Exception{
    StringBuilder sb = new StringBuilder();
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String str = br.readLine();
    int count = 0;
    int sum = str.length() == 1 ? Integer.parseInt(str) : 0;
    while(str.length() != 1){
        sum = 0;
        count++;
        for(int i = 0; i < str.length(); i++){
           sum += str.charAt(i) - '0';
        }
        str = String.valueOf(sum);
    }
    String res = sum % 3 == 0 ? "YES" : "NO";
    sb.append(count).append("\n").append(res);
    System.out.println(sb);
}

'Coding Test > Problem Number' 카테고리의 다른 글

[Java] 스택 [10828번]  (0) 2024.07.24
[Java] 큐 [10845번]  (0) 2024.07.24
[Java] 단어순서 뒤집기 [12605번]  (0) 2024.07.24
[Java] 막대기 [17608번]  (0) 2024.07.24
[Java] N과 M 12 [15666번]  (0) 2024.07.22