프로그래머스 문제풀이

Yullc·2025년 3월 23일
post-thumbnail

1. 최댓값 만들기 (1)

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

  • 나의 풀이
class Solution {
    public int solution(int[] numbers) {
        int answer = 0;
        for(int i = 0 ; i < numbers.length ; i++){
            for(int j = i+1 ; j < numbers.length ; j++){
                if(numbers[i]*numbers[j]>answer){
                    answer = numbers[i]*numbers[j];
                }
            }
        }
        System.out.println(answer);
        return answer;
    }
}
  • 나는 for문을 두번 돌면서 numbers에 있는 배열들을 계속 돌 생각이었어.
  • 그리고 두번째 for문을 돌때는 i+1을 하여 첫번째 for문이랑 안겹치게끔 설정해주고 answer에 numbers[i]랑numbers[j]가 곱한 값을 answer에 저장하는거야.
  • 그럼 i와 j가 증가할 때마다 answer보다 크면 값을 교체해주고 결국에는 최댓값을 구할 수 있을거야.

2. 모음 제거

영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

  • 나의 풀이
class Solution {
    public String solution(String my_string) {
        String answer ="";

        answer = my_string.replaceAll("[aeiou]","");
        System.out.println(answer);
        return answer;
    }
}
  • 나는 이 문제가 주어졌을 때 for문을 돌면서 answer에 aeiou를 저장하고 replace함수를 이용해서 거르는 작업을 진행 하려고 했어.
  • 근데 생각해보니까 그냥 for문을 굳이 돌아야되나? 라는 생각을 했어. 그래서 replace말고 relaceAll함수를 사용해서 my_string에 있는 문자열이랑 비교해서 빈칸으로 교체하는 작업을 진행했다~

3. 배열 원소의 길이

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

  • 나의 풀이
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;
    }
}
  • 이건 생각보다 간단하게 풀었어. 먼저 드는 생각은 그냥 strlist를 for문 돌면서 인데스의 길이만틈 answer배열에 int형태로 저장한다는 생각이 바로 들어서 그냥 이건 들자마자 바로 푼 문제인것 같아. 별로 안어려운 문제! 내가 성장한거였으면 좋겠다..ㅎㅎ

4. 삼각형의 완성조건(1)

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

  • 나의 풀이
class Solution {
    public int solution(int[] sides) {
        int answer = 0;
        int max = 0;
        int sum = 0;
        for (int i = 0; i < sides.length; i++) {
            if (sides[i] > max) {
                max = sides[i];
            }
            sum += sides[i];
        }
        if (max < sum - max) {
            answer = 1;
        } else {
            answer = 2;
        }
        return answer;
    }
}
  • 이 문제도 여지없이 for문이 필요하다고 생각했어. 그래서 max라는 변수를 만들고 거기에 sides배열에서 제일 큰 값을 저장해.
  • 그리고 sum변수에는 배열에 들어있는 값들을 전부 더해줘.
  • 그럼 삼각형이 완성 되려면 max값이 나머지값들을 더한거보다 작아야 되잖아?
  • 그럼 sum-max>max 모두 더한 값에서 최댓값을 빼면 최댓값을 제외한 값들의 합이 구해질 거고 그 값이랑 max랑 비교해서 max가 작으면 1을, 그게 아니면 2를 return하도록 설정했어.

5. 배열의 유사도

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

  • 나의 풀이
class Solution {
    public int solution(String[] s1, String[] s2) {
        int answer = 0;
        for(int i=0;i<s1.length;i++){
            for(int j=0;j<s2.length;j++){
                if(s1[i].equals(s2[j])){
                    answer++;
                }
            }
        }
        return answer;
    }
}
  • 이 문제도 비교적 쉽게 생각하고 풀었어. 그냥 각 배열마다 for문을 돌아주면서 하나씩 비교하면 된다고 생각했거든
  • 그래서 만약 인덱스의 값이 같으면 answer만 증가시켜주면 되니까 비교적 쉬운문제였어.
profile
아자아자자

0개의 댓글