문제6
369 게임은 여러 명이 같이하는 게임입니다. 게임의 규칙은 아래와 같습니다.
- 1부터 시작합니다.
- 한 사람씩 차례대로 숫자를 1씩 더해가며 말합니다.
- 말해야 하는 숫자에 3, 6, 9중 하나라도 포함되어있다면 숫자를 말하는 대신 숫자에 포함된 3, 6, 9의 개수만큼 손뼉을 칩니다.
어떤 수 number가 매개변수로 주어질 때, 1부터 number까지 369게임을 올바르게 진행했을 경우 박수를 총 몇 번 쳤는지를 return 하도록 solution 메소드를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
number가 solution 메소드의 매개변수로 주어집니다.
- number는 10 이상 1,000 이하의 자연수입니다.
return 값 설명
1부터 number까지 369게임을 올바르게 진행했을 경우 박수를 총 몇 번을 쳤는지 return 해주세요.
예시
number | return |
---|---|
40 | 22 |
예시 설명
3, 6, 9 : 각각 한 번 (+3)
13, 16, 19 : 각각 한 번 (+3)
23, 26, 29 : 각각 한 번 (+3)
30, 31, 32, 33, ..., 38, 39 : 십의 자리 열 번 + 일의 자리 세 번 (+13)
따라서, 3 + 3 + 3 + 13 = 22번의 박수를 칩니다.
풀이
- 해당 값을 받아오면, 1부터 해당 숫자까지 for문을 이용한다.
- 해당 값을 문자열로 바꾸어 자릿수가 몇자리 인지 구한다. 이 작업은 log를 이용해서도 가능하다.
- 값이 만약 2자릿수(ex:13)이면, 10의 자리수와 1의 자리수를 쪼개어 보기위해 for문을 이용한다.
- 위의 예시에서 10자리수가 3,6,9에 해당하지는지 체크하고, 있다면 결과값에 1을 더하고, 1의 자리수에 3,6,9가 있는지 확인하고 있다면 결과값을 count해준다.
위 과정을 반복하면 값이 나온다.
code
package num1;
public class q6 {
static boolean check(int n){
boolean result;
switch (n){
case 3: case 6: case 9:
result = true;
break;
default:
result = false;
break;
}
return result;
}
static int solution(int n){
int result = 0;
for(int i=1; i<=n; i++){
String numS = Integer.toString(i);
for(int a=0; a<numS.length(); a++){
int numI = Character.getNumericValue(numS.charAt(a));
if(check(numI))
//System.out.println(i);
result++;
}
}
return result;
}
public static void main(String args[]){
System.out.println(solution(40));
}
}
'ALGORITHM > COSPRO 2급' 카테고리의 다른 글
[JAVA] 팰린드롬(palindrome) (COS Pro 2급 문제 풀이) (0) | 2021.01.21 |
---|---|
[JAVA] 토익수강대상 (COS Pro 2급 문제 풀이) (0) | 2021.01.20 |
[JAVA] 두 날짜 사이의 기간 구하기 (COS Pro 2급 문제 풀이) (0) | 2021.01.13 |
[JAVA] 회원 등급에 따른 할인율 구하기 (COS Pro 2급 문제 풀이) (0) | 2021.01.13 |
[JAVA] 티셔츠 사이즈별 개수 구하기 (COS Pro 2급 문제 풀이) (0) | 2021.01.13 |