[알고리즘|SWEA] 1926. 간단한 369게임(D2) Java

영가이·2022년 7월 1일
0

[링크]1926. 간단한 369게임

📖문제

3 6 9 게임을 프로그램으로 제작중이다. 게임 규칙은 다음과 같다.

  1. 숫자 1부터 순서대로 차례대로 말하되, “3” “6” “9” 가 들어가 있는 수는 말하지 않는다.

    1 2 3 4 5 6 7 8 9…

  2. "3" "6" "9"가 들어가 있는 수를 말하지 않는대신, 박수를 친다. 이 때, 박수는 해당 숫자가 들어간 개수만큼 쳐야 한다.
    예를 들어 숫자 35의 경우 박수 한 번, 숫자 36의 경우 박수를 두번 쳐야 한다.

입력으로 정수 N 이 주어졌을 때, 1~N 까지의 숫자를

게임 규칙에 맞게 출력하는 프로그램을 작성하라.

박수를 치는 부분은 숫자 대신, 박수 횟수에 맞게 “-“ 를 출력한다.

여기서 주의해야 할 것은 박수 한 번 칠 때는 - 이며, 박수를 두 번 칠 때는 - - 가 아닌 -- 이다.

🔍코드(Java)

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		
		for (int num = 1; num <= N; num++) {
			
			//숫자 -> 문자
			String str = ""+num;
			//문자 -> 한자리씩 자르기
			String clapStr = "";
			for (int i = 0; i < str.length(); i++) {
				int eachN = Integer.parseInt(str.substring(i, i+1));
				if(eachN !=0 && eachN%3==0) {
					clapStr += "-";
				}
			}
			
			if(clapStr.length() == 0 ) {
				System.out.print(str+" ");
			}else {
				System.out.print(clapStr+ " ");
			}
			
		}

💡풀이
입력받은 숫자를 문자열로 변환하여 각 자리마다 끊고, 다시 숫자로 변환하여 3으로 나누었을때 나머지가 0인지 판단하여 해결하였다.

직관적으로 풀기위하여 채택한 방법이지만 숫자->문자->숫자 변환과정이 조금 .. 불필요한 느낌이 있는듯함. 다른 좋은 방법이 있는지 고민해봐야겠다.

profile
금융 IT서비스를 개발 및 운영하고있는 3년차 개발자입니다.

0개의 댓글