티스토리 뷰

#  나머지 구하기

 

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


제한사항
0 < num1 ≤ 100
0 < num2 ≤ 100



입출력 예 설명

입출력 예 #1
num1이 3, num2가 2이므로 3을 2로 나눈 나머지 1을 return 합니다.
입출력 예 #2
num1이 10, num2가 5이므로 10을 5로 나눈 나머지 0을 return 합니다.

 
 
나의 답변
 

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

 
 
 
 
 
 
 
 

#  중앙 값 구하기

 

문제 설명

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.



제한사항

array의 길이는 홀수입니다.
0 < array의 길이 < 100-1,00
0 < array의 원소 < 1,000



입출력 예 설명

입출력 예 #1
본문과 동일합니다.
입출력 예 #2
9, -1, 0을 오름차순 정렬하면 -1, 0, 9이고 가장 중앙에 위치하는 값은 0입니다.

 
 
나의 답변
 

import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        
        Arrays.sort(array);
        answer = array[array.length/2];
        
        return answer;
    }
}

 
 
 
 
 
 
 
 
 

#  최빈값 구하기

 

문제 설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.



제한사항

0 < array의 길이 < 100
0 ≤ array의 원소 < 1000




입출력 예 설명

입출력 예 #1
[1, 2, 3, 3, 3, 4]에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.
입출력 예 #2
[1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.
입출력 예 #3
[1]에는 1만 있으므로 최빈값은 1입니다.

 
 
나의 답변

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int max = 0;
        boolean multipleModes = false;
        
        for(int i=0; i<array.length; i++){
            int count = 0;
            for(int j=0; j<array.length; j++){
                if(array[i] == array[j]){
                    count++;
                }
            }
            if(count > max){
                max = count;
                answer = array[i];
                multipleModes = false;
            }
            else if(count == max && answer != array[i]){
                multipleModes = true;
            }
            
        }
        
        if(multipleModes){
            answer = -1;
        }
        
        return answer;
    }
}

 
 
 

  1. 변수 초기화:
    • answer: 최빈값을 저장할 변수로, 초기값은 0.
    • max: 현재까지 발견된 최대 빈도수를 저장할 변수로, 초기값은 0.
    • multipleModes: 최빈값이 여러 개인지 여부를 나타내는 boolean 변수로, 초기값은 false.
  2. 반복문:
    • 바깥쪽 for 루프는 배열의 각 요소를 순회한다.
    • 안쪽 for 루프는 현재 요소와 같은 값을 가지는 요소의 개수를 세어 최빈값을 결정한다.
  3. 최빈값 계산:
    • 안쪽 for 루프에서 각 요소의 빈도를 계산합니다. 즉, 현재 요소와 같은 값을 가지는 요소의 개수를 세어 count에 저장한다.
    • 만약 count가 현재까지 발견된 최대 빈도수인 max보다 크다면:
      • max를 count로 업데이트하고, answer를 현재 요소로 설정합니다. 즉, 현재 요소가 최빈값이 된다.
      • multipleModes를 false로 설정합니다. 이는 최빈값이 여러 개인지를 나타내는 변수이다.
    • 만약 count가 max와 같고, 현재 요소가 answer와 다르다면:
      • multipleModes를 true로 설정합니다. 이는 최빈값이 여러 개임을 나타낸다.
  4. 결과 반환:
    • 반복문을 모두 순회한 후, multipleModes가 true이면 최빈값이 여러 개이므로 -1을 반환합니다. 그렇지 않으면 answer를 반환한다.

주어진 배열에서 최빈값을 찾는 과정을 반복문을 통해 직접 계산하는 방식으로 구현하였다.
 
 
 
 
 

짝수는 싫어요

 

문제 설명

정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.


제한사항
1 ≤ n ≤ 100



입출력 예 설명

입출력 #1
10 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9]를 return합니다.

입출력 #1
15 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9, 11, 13, 15]를 return합니다.

 
 
나의 답변
 

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

 
처음에 인덱스를 따로 관리하는 int k 변수를 선언하지 않고 i로 통일하여 사용했다.
그러니 오류가 발생했다.
인덱스를 따로 관리하지 않는 경우 배열에 값을 저장할 때, 배열의 인덱스가 반복문 변수와 동일하게 사용되므로 배열의 크기를 초과하는 접근이 발생하여 오류가 발생했다.
 
 
 
 
다른 사람 답변
 

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

 
 
 
 
 
 
 
 

문자열 뒤집기

 

문제 설명

문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.


제한사항
1 ≤ my_string의 길이 ≤ 1,000



입출력 예 설명

입출력 예 #1
my_string이 "jaron"이므로 거꾸로 뒤집은 "noraj"를 return합니다.
입출력 예 #2
my_string이 "bread"이므로 거꾸로 뒤집은 "daerb"를 return합니다.

 
 
 
 
나의 답변
 

class Solution {
    public String solution(String my_string) {
        String answer = "";
        
        StringBuffer sb = new StringBuffer(my_string);
        answer = sb.reverse().toString();

        return answer;
    }
}

 
 
 
문자열을 뒤집을 때는 StringBuffer의 reverse를 사용하면 된다.
이때 StringBuilder의 reverse를 사용해도 상관없다.
둘의 차이는 동기화의 여부이다.
StringBuffer는 동기화를 보장하고 StringBuilder는 동기화를 보장하지 않는다.
 
 
 
 
 

'코딩 > 프로그래머스' 카테고리의 다른 글

SQL 물고기 문제 모음  (0) 2024.06.07
코딩 기초 트레이닝 #51 ~ #55  (0) 2024.06.03
코딩 기초 트레이닝 #41 ~ #45  (0) 2024.05.29
[SQL - SUM,MAX,MIN] 1  (0) 2024.05.28
[SQL - JOIN] 2  (0) 2024.05.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday