본문 바로가기
🤍 𝙋𝙍𝙊𝙂𝙍𝘼𝙈𝙈𝙀𝙍𝙎

[프로그래머스] Day4 연산, 조건문

by 깅당긍 2024. 7. 15.
n의 배수

[문제 설명]
정수 num과 n이 매개 변수로 주어질 때,
num이 n의 배수이면 1을 return n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.

[제한사항]
2 ≤ num ≤ 1002 ≤ n ≤ 9

입출력 예)
num n result
98 2 1
34 3 0
입출력 예)
98은 2의 배수이므로 1을 return합니다.

입출력 예)
32는 3의 배수가 아니므로 0을 return합니다.
class Solution {
    public int solution(int num, int n) {
        int answer = 0;
        if(num%n == 0){
            return 1;
        }else{
            return answer;
        }
    }
}

n으로 나눈 나머지가 0이면 n의 배수로 구별
맞으면 1 아니면 0 리턴 !


공배수
 
[문제 설명]
정수 number와 n, m이 주어집니다.
number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.

[제한사항]
10 ≤ number ≤ 1002 ≤ n, m < 10

입출력 예)
number n m result
60 2 3 1
55 10 5 0
입출력 예)
60은 2의 배수이면서 3의 배수이기 때문에 1을 return합니다.

입출력 예)
55는 5의 배수이지만 10의 배수가 아니기 때문에 0을 return합니다.
class Solution {
    public int solution(int number, int n, int m) {
        int answer = (number%n == 0) && (number%m == 0) ? 1:0;
        return answer;
    }
}

if문을 자주 쓴 것 같아 이번엔 삼항연산자를 사용했다
확실히 코드가 더 깔끔한 느낌 !


홀짝에 따라 다른 값 반환하기

[문제 설명]
양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

[제한사항]
1 ≤ n ≤ 100

입출력 예)
n result
7 16
10 220
입출력 예)
예제 1번의 n은 7로 홀수입니다.
7 이하의 모든 양의 홀수는 1, 3, 5, 7이고 이들의 합인 1 + 3 + 5 + 7 = 16을 return 합니다.

입출력 예)
예제 2번의 n은 10으로 짝수입니다.
10 이하의 모든 양의 짝수는 2, 4, 6, 8, 10이고 이들의 제곱의 합인 22 + 42 + 62 + 82 + 102 = 4 + 16 + 36 + 64 + 100 = 220을 return 합니다.
class Solution {
    public int solution(int n) {
        int answer = 0;
        if(n%2 != 0){
            for(int i=1; i<=n; i+=2){
                answer += i;
            }
        }else{
            for(int i=2; i<=n; i+=2){
                answer += (i*i);
            }
        }
        return answer;
    }
}

처음에는 for문을 한번만 돌렸는데
도저히 각이 안잡혀서 둘로 나눴다
조건도 짝수 홀수 다르고 하니 !
제곱은 숫자*숫자 값이니까 i*i 처리했다

class Solution {
    public int solution(int n) {
        int answer = 0;

            for(int i = n; i >= 0; i -= 2)
                answer += (n % 2 == 0) ? i * i : i;

        return answer;
    }
}

이건 다른 사람의 코드
여기서도 삼항을.. 생각도 못했다
허를 찌르네 ㅜㅜ


조건 문자열

[문제 설명]
문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
두 수가 n과 m이라면">", "=" : n >= m"<", "=" : n <= m">", "!" : n > m"<", "!" : n < m두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.

[제한 사항]
1 ≤ n, m ≤ 100

입출력 예)
ineq eq n m result
"<" "=" 20 50 1
">" "!" 41 78 0
입출력 예)
20 <= 50은 참이기 때문에 1을 return합니다.

입출력 예)
41 > 78은 거짓이기 때문에 0을 return합니다.
class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        boolean answer = false;

        switch(eq) {
            case "!": 
                switch(ineq) {
                    case "<":
                        answer = n < m;
                        break;
                    case ">":
                        answer = n > m;
                        break;
                }
                break;
            case "=":
                switch(ineq) {
                    case "<":
                        answer = n <= m;
                        break;
                    case ">":
                        answer = n >= m;
                        break;
                }
                break;
        }
        return answer ? 1 : 0;
    }
}

if, else if를 쓸까 하다가 너무 길어질것 같아서 switch문을 썼는데 eq가 "!" 일 때와 "=" 일 때로 나눠야해서 이중 switch문을 썼다
그러다보니 어째 더 길어진 느낌 ..?


flag에 따라 다른 값 반환하기

[문제 설명]
두 정수 a, b와 boolean 변수 flag가 매개변수로 주어질 때,
flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요.

[제한사항]
-1,000 ≤ a, b ≤ 1,000

입출력 예)
a b flag result
-4 7 true 3
-4 7 false -11
입출력 예)
예제 1번에서 flag가 true이므로 a + b = (-4) + 7 = 3을 return 합니다.

입출력 예)
예제 2번에서 flag가 false이므로 a - b = (-4) - 7 = -11을 return 합니다.
class Solution {
    public int solution(int a, int b, boolean flag) {
        return flag ? a+b:a-b;
    }
}

flag는 데이터 타입이 boolean이기 때문에
삼항연산자를 쓸 때 별도로 조건을 넣지 않았다
flag 자체가 조건이 되기 때문 !
참이면 a+b 리턴 그렇지 않으면 a-b을 리턴한다