프로그래머스 코딩테스트 입문 20%

2025년 04월·자바

나머지 구하기

📋 문제 설명

정수 `num1`, `num2`가 매개변수로 주어질 때, `num1`를 `num2`로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

0 < `num1` ≤ 100

0 < `num2` ≤ 100

class Solution {
    public int solution(int num1, int num2) {
        return num1 % num2;
    }
}

 

숫자 비교하기

📋 문제 설명

정수 `num1`과 `num2`가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

0 ≤ `num1` ≤ 10,000

0 ≤ `num2` ≤ 10,000

class Solution {
    public int solution(int num1, int num2) {
        return num1 == num2 ? 1 : -1;
    }
}

✍🏻 삼항연산자

조건식 ? 참일 때 값 : 거짓일 때 값

 

두 수의 차 구하기

📋 문제 설명

정수 `num1`과 `num2`가 주어질 때, `num1`에서 `num2`를 뺀 값을 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

-50,000 ≤ `num1` ≤ 50,000

-50,000 ≤ `num2` ≤ 50,000

class Solution {
    public int solution(int num1, int num2) {
        return num1 - num2;
    }
}

 

나이 출력

📋 문제 설명

머쓱이는 선생님이 몇년도에 태어났는지 궁금해졌습니다. 2022년 기준 선생님의 나이 `age`가 주어질 때, 선생님의 출생 연도를 return 하는 solution 함수를 완성해주세요.

📌 제한사항

0 < `age` ≤ 120

나이는 태어난 연도에 1살이며 매년 1월 1일마다 1살씩 증가합니다.

class Solution {
    public int solution(int age) {
        return 2022 - age + 1;
    }
}

 

몫 구하기

📋 문제 설명

정수 `num1`, `num2`가 매개변수로 주어질 때, `num1`을 `num2`로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

0 < `num1` ≤ 100

0 < `num2` ≤ 100

class Solution {
    public int solution(int num1, int num2) {
        return num1 / num2;
    }
}

 

두 수의 곱 구하기

📋 문제 설명

정수 `num1`, `num2`가 매개변수로 주어집니다. `num1`과 `num2`를 곱한 값을 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

0 ≤ `num1` ≤ 100

0 ≤ `num2` ≤ 100

class Solution {
    public int solution(int num1, int num2) {
        return num1 * num2;
    }
}

 

두 수의 합 구하기

📋 문제 설명

정수 `num1`과 `num2`가 주어질 때, `num1`과 `num2`의 합을 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

-50,000 ≤ `num1` ≤ 50,000

-50,000 ≤ `num2` ≤ 50,000

class Solution {
    public int solution(int num1, int num2) {
        return num1 + num2;
    }
}

 

두 수의 나눗셈

📋 문제 설명

정수 `num1`과 `num2`가 매개변수로 주어질 때, `num1`을 `num2`로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

0 < `num1` ≤ 100

0 < `num2` ≤ 100

class Solution {
    public int solution(int num1, int num2) {
        return (int) (((double) num1 / num2) * 1000);
    }
}

 

각도기

📋 문제 설명

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 `angle`이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return 하도록 solution 함수를 완성해주세요.

  • 예각: 0 < `angle` < 90
  • 직각: `angle` = 90
  • 둔각: 90 < `angle` < 180
  • 평각: `angle` = 180

📌 제한사항

0 ≤ `angle` ≤ 180

`angle`은 정수입니다.

class Solution {
    public int solution(int angle) {
        if (0 < angle && angle < 90) return 1;
        else if (angle == 90) return 2;
        else if (90 < angle && angle < 180) return 3;
        else return 4;
    }
}

 

양꼬치

📋 문제 설명

머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 `n`과 `k`가 매개변수로 주어졌을 때, 양꼬치 `n`인분과 음료수 `k`개를 먹었다면 총 얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.

📌 제한사항

0 < `n` < 1,000

`n` / 10 ≤ `k` ≤ 1,000

서비스로 받은 음료수는 모두 마십니다.

class Solution {
    public int solution(int n, int k) {
        int service = n / 10;
        return 12000 * n + 2000 * (k - service);
    }
}

 

짝수의 합

📋 문제 설명

정수 `n`이 주어질 때, `n` 이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

📌 제한사항

0 < `n` < 1,000

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

 

배열 원소의 길이

📋 문제 설명

문자열 배열 `strlist`가 매개변수로 주어집니다. `strlist` 각 원소의 길이를 담은 배열을 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

1 ≤ `strlist` 원소의 길이 < 100

`strlist`는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.

class Solution {
    public int[] solution(String[] strlist) {
        int[] answer = new int[strlist.length];
        for (int i = 0; i < strlist.length; i++) {
            answer[i] = strlist[i].length();
        }
        return answer;
    }
}

 

배열의 유사도

📋 문제 설명

두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 `s1`과 `s2`가 주어질 때 같은 원소의 개수를 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

1 ≤ `s1`, `s2`의 길이 ≤ 100

1 ≤ `s1`, `s2`의 원소의 길이 ≤ 10

`s1`과 `s2`의 원소는 알파벳 소문자로만 이루어져 있습니다.

`s1`과 `s2`는 각각 중복된 원소를 갖지 않습니다.

class Solution {
    public int solution(String[] s1, String[] s2) {
        Set<String> set1 = new HashSet<>(Arrays.asList(s1));
        Set<String> set2 = new HashSet<>(Arrays.asList(s2));
        set1.retainAll(set2);
        return set1.size();
    }
}

교집합으로 풀고 싶었다

✍🏻 Set

더보기
Set<Integer> set = new HashSet<>();

set.add(1);
set.add(2);
set.add(3);
System.out.println(set.size());       // 3

System.out.println(set.contains(2));  // true
set.remove(2);
System.out.println(set.contains(2));  // false

System.out.println(set.isEmpty());    // false
set.clear();
System.out.println(set.isEmpty());    // true

// 배열 → Set 변환
Set<String> set1 = new HashSet<>(Arrays.asList("a", "b", "c"));
Set<String> set2 = new HashSet<>(Arrays.asList("b", "c", "d"));

Set<String> inter = new HashSet<>(set1);
inter.retainAll(set2);  // 교집합

Set<String> union = new HashSet<>(set1);
union.addAll(set2);  // 합집합

Set<String> diff = new HashSet<>(set1);
diff.removeAll(set2);  // 차집합

 

문자열 안에 문자열

📋 문제 설명

문자열 `str1`, `str2`가 매개변수로 주어집니다. `str1` 안에 `str2`가 있다면 1을, 없다면 2를 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

1 ≤ `str1`의 길이 ≤ 100

1 ≤ `str2`의 길이 ≤ 100

문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다.

class Solution {
    public int solution(String str1, String str2) {
        return str1.contains(str2) ? 1 : 2;
    }
}

✍🏻 String

더보기
String str = "Hello, world!";

// 길이, 문자 추출
System.out.println(str.length());          // 13
System.out.println(str.charAt(1));         // e

// 문자열 자르기
System.out.println(str.substring(1, 4));   // ell

// 검색
System.out.println(str.indexOf("o"));      // 4
System.out.println(str.lastIndexOf("o"));  // 8
System.out.println(str.contains("ll"));    // true

// 비교
System.out.println(str.equals("Hello, world!"));  // true
System.out.println(str.equalsIgnoreCase("hello, World!"));  // true

// 대소문자 변환
System.out.println(str.toUpperCase());  // HELLO, WORLD!
System.out.println(str.toLowerCase());  // hello, world!

// 공백 제거
System.out.println(" Hello, world! ".trim());  // Hello, world!

// 치환
System.out.println(str.replace("l", ""));  // Heo, word!

// 반복
System.out.println(str.repeat(3));  // Hello, world!Hello, world!Hello, world!

// 분리
str.split(" ");  // ["Hello,", "world!"]

// 뒤집기 📌 StringBuiler 사용
String reversed = new StringBuilder(str).reverse().toString();

 

배열의 평균값

📋 문제 설명

정수 배열 `numbers`가 매개변수로 주어집니다. `numbers`의 원소의 평균값을 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

0 ≤ `numbers`의 원소 ≤ 1,000

1 ≤ `numbers`의 길이 ≤ 100

정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.

class Solution {
    public double solution(int[] numbers) {
        double sum = 0;
        for (int n : numbers) {
            sum += n;
        }
        return sum / numbers.length;
    }
}

 

배열 뒤집기

📋 문제 설명

정수가 들어있는 배열 `num_list`가 매개변수로 주어집니다. `num_list`의 원소의 순서를 거꾸로 뒤집은 배열을 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

1 ≤ `num_list`의 길이 < 1,000

0 ≤ `num_list`의 원소 ≤ 1,000

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length];
        for (int i = 0; i < num_list.length; i++) {
            answer[i] = num_list[num_list.length - 1 - i];
        }
        return answer;
    }
}

 

제곱수 판별하기

📋 문제 설명

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 `n`이 매개변수로 주어질 때, `n`이 제곱수라면 1을 아니라면 2를 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

1 ≤ `n` ≤ 1,000,000

class Solution {
    public int solution(int n) {
        int sqrt = (int) Math.sqrt(n);
        return sqrt * sqrt == n ? 1 : 2;
    }
}

✍🏻 Math 클래스

더보기
// 별도 임포트 없이 바로 쓸 수 있어
System.out.println(Math.abs(-5));     // 5

System.out.println(Math.max(3, 7));   // 7
System.out.println(Math.min(3, 7));   // 3

System.out.println(Math.pow(2, 3));   // 8.0
System.out.println(Math.sqrt(9));     // 3.0

System.out.println(Math.round(2.5));  // 3
System.out.println(Math.floor(2.7));  // 2.0
System.out.println(Math.ceil(2.1));   // 3.0

 

짝수 홀수 개수

📋 문제 설명

정수가 담긴 리스트 `num_list`가 주어질 때, `num_list`의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

📌 제한사항

1 ≤ `num_list`의 길이 < 100

0 ≤ `num_list`의 원소 ≤ 1,000

class Solution {
    public int[] solution(int[] num_list) {
        int even = 0;
        int odd = 0;
        for (int n : num_list) {
            if (n % 2 == 0) even++;
            else odd++;
        }
        int[] answer = {even, odd};
        return answer;
    }
}

 

특정 문자 제거하기

📋 문제 설명

문자열 `my_string`과 문자 `letter`이 매개변수로 주어집니다. `my_string`에서 `letter`를 제거한 문자열을 return 하도록 solution 함수를 완성해주세요.

📌 제한사항

1 ≤ `my_string`의 길이 < 100

`letter`은 길이가 1인 영문자입니다.

`my_string`과 `letter`은 알파벳 대소문자로 이루어져 있습니다.

대문자와 소문자를 구분합니다.

class Solution {
    public String solution(String my_string, String letter) {
        return my_string.replace(letter, "");
    }
}

 

피자 나눠 먹기 (3)

📋 문제 설명

머쓱이네 피자 가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 `slice`와 피자를 먹는 사람 수 `n`이 매개변수로 주어질 때, `n`명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

📌 제한사항

2 ≤ `slice` ≤ 10

1 ≤ `n` ≤ 100

class Solution {
    public int solution(int slice, int n) {
        return (int) Math.ceil((double) n / slice);
    }
}

'자바' 카테고리의 다른 글

프로그래머스 코딩 기초 트레이닝 🔥 조건문 / 반복문  (0) 2025.05.01
프로그래머스 코딩 기초 트레이닝 🔥 출력 / 연산 / 문자열  (0) 2025.04.30
프로그래머스 코딩테스트 입문 60%  (0) 2025.04.27
프로그래머스 코딩테스트 입문 40%  (0) 2025.04.27
자바 입출력 정리  (0) 2025.04.25
'자바' 카테고리의 다른 글
  • 프로그래머스 코딩 기초 트레이닝 🔥 출력 / 연산 / 문자열
  • 프로그래머스 코딩테스트 입문 60%
  • 프로그래머스 코딩테스트 입문 40%
  • 자바 입출력 정리
토토이
토토이
토토이 님의 블로그 입니다.
  • 토토이
    토토이 님의 블로그
    토토이
    • 분류 전체보기 (18)
      • KT 에이블스쿨 (5)
      • 복습 (1)
      • 자바 (11)
      • 뻐꿈 (0)
  • 태그

    AICE
    java
    스택
    에이블스쿨
    인프런
    자격증
    자바
    취준
    코딩테스트
    코테
    프로그래머스
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
  • hELLO· Designed By정상우.v4.10.3
토토이
프로그래머스 코딩테스트 입문 20%
상단으로

티스토리툴바