ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • algorithm
    자바 알고리즘 - 369게임
    2023. 9. 4. 13:40
    728x90

    문제 설명

    머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.

     

    제한 사항

    • 1 ≤ order ≤ 1,000,000

     

    답안

    class Solution {
        public int solution(int order) {
            int answer = 0;
            String[] arr = String.valueOf(order).split("");
    
            for(int i=0; i<arr.length; i++) {
                if(Integer.parseInt(arr[i])!=0 && Integer.parseInt(arr[i])%3==0)
                {
                    answer++;
                }
            }
    
            return answer;
        }
    }

    전달받은 order 변수를 String으로 변환후 String 배열에 담아 for문을 돌면서 int로 형변환 후 0이 아니면서 3으로 나눈 나머지가 0 일 경우 값을 더해 리턴한다.

    나는 한글자씩 쪼개야 된다는 생각을 먼저 했는데 첫번째 자리수를 하나씩 계산하는 방법은 나머지 연산을 통해서도 가능하다.

    class Solution {
        public int solution(int order) {
            int answer = 0;
    
            while(order>1) {
                if(order%10==3 || order%10==6 || order%10==9) {
                    answer++;
                }
                order/=10;
            }
    
            return answer;
        }
    }

    order를 10으로 나눠서 나머지가 3,6,9인 경우 answer의 값을 더해주는 식으로, 첫번째 자리수에 3,6,9가 오는지 알 수 있고 order의 값을 계속 나누다보면 첫번째 자리수가 계속 탈락하기 때문에 한자리씩 비교가 가능하다.

     

    참고

    • String.valueOf("인자") : 전달받은 인자를 String으로 형변환하는 함수
    • 문자열.split("구분자") : 구분자를 통해 문자열을 구분하여 배열로 리턴하는 함수. 구분자가 없는 경우 한자리씩 끊어서 배열로 리턴
    • Integer.parseInt("인자") : 전달받은 인자를 int로 형변환하는 함수
    728x90
Designed by Tistory.