개발에 AtoZ까지

[JAVA][D2] 1926. 간단한 369게임 본문

코딩테스트 준비/SWEA

[JAVA][D2] 1926. 간단한 369게임

AtoZ 개발자 2021. 1. 3. 17:50
반응형

문제 

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 까지의 숫자를

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

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

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

[제약사항]

N은 10이상 1,000이하의 정수이다. (10 ≤ N ≤ 1,000)

 

[입력]

입력으로 정수 N 이 주어진다.


[출력]

1 ~ N까지의 숫자를 게임 규칙에 맞게 출력한다.

예시

 

풀이

1. 첫번째 풀이법 (contains 메소드 사용)

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Solution {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String guNum="369";
		try {
			int N = Integer.parseInt(br.readLine());
			//3,6,9 인지 아닌지 확인하여 숫자를 출력할지 말지 정하는 flag
			boolean flag=true;
			for(int i=1;i<=N;i++) {
				String[] numStr = Integer.toString(i).split("");
				for(String s:numStr) {
					if(guNum.contains(s)) {
						System.out.print("-");
						flag=false;
					}
				}
				if(flag) {
					System.out.print(i+" ");
				}
				else {
					System.out.print(" ");
					flag=true;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 

2. 두번째 풀이법 (contains 사용안함)

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Solution {
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try {
			int N = Integer.parseInt(br.readLine());
			//3,6,9 인지 아닌지 확인하여 숫자를 출력할지 말지 정하는 flag
			boolean flag=true;
			for(int i=1;i<=N;i++) {
				String numStr=i+"";
				for(int j=0;j<numStr.length();j++) {
					if(numStr.charAt(j)=='3'||numStr.charAt(j)=='6'||numStr.charAt(j)=='9') {
						System.out.print("-");
						flag=false;
					}
				}
				if(flag) {
					System.out.print(i+" ");
				}
				else {
					System.out.print(" ");
					flag=true;
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
반응형
Comments