프로그래머스/Lv. 0 코딩 기초 트레이닝

[프로그래머스] 코딩 기초 트레이닝 4일차 - n의 배수

두부버섯 2023. 11. 3. 12:50

Java를  처음 접하고 입문하는 단계이기 때문에

정답률이 높은 문제부터 차근차근 정리해나갈 예정입니다.

프로그래머스는 하루에 4문제 이상씩 여유가 되는대로 풀 것입니다.


1. n의 배수

문제 설명

정수 num n이 매개 변수로 주어질 때, num n의 배수이면 1을 return 

n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.

제한 사항

  • 2 ≤ num ≤ 100
  • 2 ≤ n ≤ 9

입출력 예

num n  result
98 2 1
34 3 0

 

class Solution {
    public int solution(int num, int n) {
        return num%n==0 ? 1 : 0;
    }
}

 

num을 n으로 나눈 나머지가 0일 경우 배수이므로

1을 리턴하고, 아닐 경우 0을 리턴하도록 하였습니다.


2. 공배수

문제 설명

정수 number n, m이 주어집니다. number n의 배수이면서 

m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.

제한 사항

  • 10 ≤ number ≤ 100
  • 2 ≤ n, m < 10

입출력 예

number n m result
60 2 3 1
55 10 5 0

 

class Solution {
    public int solution(int number, int n, int m) {
        return number%n==0 && number%m==0 ? 1 : 0;
    }
}

 

number를 n으로 나눈 나머지가 0이고, number를 m으로 나눈 나머지가 0일 경우

0을 리턴하고, 아닐경우 1을 리턴하게 하였습니다.


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

문제 설명

양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고

 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

제한 사항

  • 1 ≤ n ≤ 100

입출력 예

n result
7 16
10 220

 

class Solution {
    public int solution(int n) {
         int answer = 0;
        if(n%2==0){
            for(int i=0; i<=n; i+=2){
                answer+=(i*i);
            }
        } else{
            for(int i=1; i<=n; i+=2){
                answer+=i;
            }
        }
        return answer;
    }
}

n이 홀수인지 짝수인지 구분하여,

각각에 맞는 for문을 돌렸습니다.

 


4. 조건 문자열

문제 설명

문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.

  • 두 수가 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

 

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        int answer = 0;
        if(ineq.equals(">") &&  eq.equals("=") && n>=m){
            answer = 1;
        }
        if(ineq.equals("<") &&  eq.equals("=") && n<=m){
            answer = 1;
        }
        if(ineq.equals(">") &&  eq.equals("!") && n>m){
            answer = 1;
        }
        if(ineq.equals("<") &&  eq.equals("!") && n<m){
            answer = 1;
        }
        return answer;
    }
}

4개의 경우의 수를 비교하여 answer을 교체하였습니다.

이와 다른 풀이로 answer를 boolean변수로 만들어서

answer를 각각 경우의 수에 넣은 풀이가 인상깊었습니다.


5. 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
class Solution {
    public int solution(int a, int b, boolean flag) {
        return flag ? a+b : a-b;
    }
}

 

flag가 true일 때 a+b, 그렇지 않을 때 a-b를 리턴하도록 하였습니다.