💡하샤드 수 : Lv.1
출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 하샤드 수
class Solution {
public boolean solution(int x) {
boolean answer = true;
int number = 0;
String s = String.valueOf(x);
char[] arr = s.toCharArray();
for (int i = 0; i < arr.length; i++){
number += Character.getNumericValue(arr[i]);
}
if (x%number == 0){
answer = true;
} else {
answer = false;
}
return answer;
}
}
- 정수를 입력받고 자릿수를 이용한 연산 문제가 많음
- 입력받은 정수 -> 문자열로 변환 -> charArray로 변환 -> charArray 돌면서 다시 정수로 변환 -> 연산
- 정수를 문자열로 변환한뒤에 char타입의 배열로 만들면 자릿수대로 접근이 가능하기 때문에 이렇게 풀이함
💡두 정수 사이의 합 : Lv.1
출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 두 정수 사이의 합
class Solution {
public long solution(int a, int b) {
long answer = 0;
int min = 0;
int max = 0;
if (a < b){
min = a;
max = b;
} else {
min = b;
max = a;
}
for(int i = min; i <= max; i++){
answer += (long)i;
}
return answer;
}
}
- for문을 통해 더하기 연산을 수행
- 대소관계를 먼저 정의한 후 반복문을 진행
- a == b 인 경우는 min, max 정의가 영향을 미치지 않으므로 else로 묶음
💡콜라츠 추측 : Lv.1
출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 콜라츠 추측
class Solution {
public int solution(int num) {
int answer = 0;
int count = 0;
int evenOrodd = 0;
while(num!=1){
count += 1;
evenOrodd = num%2;
if (count == 500){
break;
}
switch(evenOrodd){
case 0: num /= 2;
break;
case 1: num = (num*3) + 1;
break;
}
}
if(count == 500){
answer = -1;
} else {
answer = count;
}
return answer;
}
}
- 주어진 절차대로 if문을 사용하여 구현
- answer이 1이 될 때 까지 반복되어야 하므로 while문 사용
- 작업의 수가 제한되므로 while 돌 때마다 count+=1할 필요가 있음
- 들어온 숫자마다 한번씩만 연산되어야 하므로 if문 보다는 switch문을 통해 만들어야함
- while문에서 count가 500이 되는 순간 while문이 종료되어야 함
그러기 위해서는 switch문을 돌기 전에 count가 500인지 확인하는 if문이 있어야함