알고리즘 - 369게임 - 120891

워니·2023년 3월 30일

알고리즘

목록 보기
11/29
post-thumbnail

[level 0] 369게임 - 120891

문제 링크

성능 요약

메모리: 74.9 MB, 시간: 1.19 ms

구분

코딩테스트 연습 > 코딩테스트 입문

채점결과


정확성: 100.0
합계: 100.0 / 100.0

문제 설명

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


제한사항
  • 1 ≤ order ≤ 1,000,000

입출력 예
order result
3 1
29423 2

입출력 예 설명

입출력 예 #1

  • 3은 3이 1개 있으므로 1을 출력합니다.

입출력 예 #2

  • 29423은 3이 1개, 9가 1개 있으므로 2를 출력합니다.

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges


  • 내 풀이
class Solution {
    public int solution(int order) {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < String.valueOf(order).length(); i++) {
            list.add((int) String.valueOf(order).charAt(i) - '0');
        }
        int answer = (int) list.stream().filter(x -> x == 3 || x == 6 || x == 9).count();
        return answer;
    }
}
  • TDD
class SolutionTest {

    @Test
    @DisplayName("3 = 1")
    void solution() {
        Assertions.assertThat(new Solution().solution(3)).isEqualTo(1);
    }

    @Test
    @DisplayName("29423 = 2")
    void solution2() {
        Assertions.assertThat(new Solution().solution(29423)).isEqualTo(2);
    }
}

  • 풀이
    list 컬렉션을 만들고
    매개변수로 들어온 order를 string으로 변환후 charAt.(index)로 짜른 후 다시 int로 캐스팅 하여 넣어줬는데
    ascii 값으로 들어온다 그럴땐 -'0'을 해준다.
    그럼 내가 원하는 order가 쪼개진 정수형태로 들어온다
    stream을 써보려 했지만 역시나 어렵다
    return 해줄 answer 에 filter조건을 걸어 3, 6, 9 에 해당하는 값들의 count를 int형으로 캐스팅해 담아줬다
profile
Backend-Dev

0개의 댓글