문제
int order값을 받는다. 3 6 9가 포함되어있다면 박수를 친다. 박수의 횟수를 구하라
내 풀이
public int solution1(int order) {
int answer = 0;
// 3 6 9가 포함되어있다면 박수
String str = String.valueOf(order);
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '3' || str.charAt(i) == '6' || str.charAt(i) == '9') {
answer++;
}
}
}order값을 스트링으로 변환해 풀었다. for문에서 String의 i번째 단어가 3 6 9면 answer가 1씩 늘어나게 했다.\
강사님 풀이
public int solution2(int order) {
int answer = 0;
int count = 0;
while (order != 0) {
if (order % 10 == 3 || order % 10 == 6 || order % 10 == 9) {
count++;
}
order = order / 10; //10으로 나눠서 점점 줄어듬 몫이 0이면 더이상나눌게없게 된 것임.
}
answer = count;
return answer;
}order값이 12345라면
1.10으로 나눈 나머지를 구한다 -> 5
2.order값을 10으로 나눈다. -> 정수를 나누면 정수가 나오기때문에 1234가 된다.
3.10으로 나눈 나머지를 구한다 -> 4
4.order값을 10으로 나눈다. -> 정수를 나누면 정수가 나오기때문에 123가 된다.
5.반복
6.마지막 몫을 1/10하면 0이기때문에 0이되면 멈춘다.
다른 문제풀이들에서도 한번씩 본 것이다. 자리수마다 뭔가을 알아낼때 유용할 것 같다.
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 lv0 제곱수판별하기 (0) | 2023.02.22 |
|---|---|
| 프로그래머스 lv0 모음제거 (0) | 2023.02.22 |
| 프로그래머스 lv0 배열자르기 (0) | 2023.02.21 |
| 프로그래머스 lv0 암호해독 (0) | 2023.02.21 |
| 프로그래머스 lv0 문자열 뒤집기 (0) | 2023.02.20 |