프로그래머스2일차

지선·2023년 4월 28일

코딩테스트

목록 보기
3/8

중앙값 구하기

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        
        for(int i=0;i<array.length;i++){
            for(int j=0;j<array.length-1;j++){
                if(array[j]>array[j+1]){
                    int temp=array[j+1];
                    array[j+1]=array[j];
                    array[j]=temp;
                }
            }
        }
        int index= (array.length)/2;
        answer=array[index];
        return answer;
    }
}

이 문제는 처음에 냅다 인덱스 써서 풀려다가 이상해서 봤는데
배열에 정렬이 되어있지 않았다. 그래서 버블 정렬해서 문제를 해결해주었다.

최빈값 구하기

class Solution {
    public int solution(int[] array) {
    
        int answer = 0;
        int []arr=new int[1001];
        
        for(int i=0;i<arr.length;i++){
            arr[i]=0;
        }
        
        for(int i=0;i<array.length;i++){
            arr[array[i]]++;
        }
     
        int max=-1;
        for(int i=0;i<arr.length;i++){
            
            if(max<arr[i]){
                max=arr[i];
                answer=i;
            }
            
        }

        if(answer==0){
            return answer;
        }
            
        int cnt=-1;
        for(int i=0;i<arr.length;i++){
            if(arr[i]==max){
               cnt++;
            }
        }
        if(cnt>0){
            return -1;    
        }
        else {
            return answer;
        }
        
    }
}

이 문제가 레벨 0이라면 난 아무래도 레벨 0인듯 싶다.. 한번에 못풀고.. 계속 아 뭐지뭐지 이러면서 풀었다ㅠㅠ

짝수는 싫어요

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

왜 짝수가 싫니

최대값 만들기(1)

class Solution {
    public int solution(int[] numbers) {
        
        int answer = 0;
        
        int max1_index=0, max1=0, max2=0;
        for(int i=0;i<numbers.length;i++){
            if(max1<numbers[i]){
                max1=numbers[i];
                max1_index=i;
            }
             
        }
        numbers[max1_index]=0;
        for(int i=0;i<numbers.length;i++){
            if(max2<numbers[i]){
                max2=numbers[i];
            }
        }
        answer=max1*max2;
        return answer;
    }
}

피자 나눠 먹기(3)

class Solution {
    public int solution(int slice, int n) {
        int answer = 0;
        if(n%slice==0){
            answer=n/slice;
        }
        else{
            answer=n/slice+1;
        }
        return answer;
    }
}

피자 나눠 먹기(1)

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        if(n%7==0){
            answer=n/7;
        }
        else{
             answer=n/7+1;
        }
        
        return answer;
    }
}

머쓱이보다 키 큰 사람

class Solution {
    public int solution(int[] array, int height) {
        int answer = 0;
        for(int i=0;i<array.length;i++){
            if(array[i]>height){
                answer++;
            }
        }
        return answer;
    }
}

아이스아메리카노

class Solution {
    public int[] solution(int money) {
        int[] answer = new int[2];
        
        answer[0]=money/5500;
        answer[1]=money%5500;
        
        return answer;
        
    }
}

편지

class Solution {
    public int solution(String message) {
        int answer = 0;
        answer=2*message.length();
        return answer;
    }
}

순서쌍의 개수


첨으로.. 시간 초과 뜬.. 문제

이중 for문 돌려서 i랑 j다 곱해서 구했는데 O(n²)이 되어서 그런듯 싶다 ^^ 급 이산수학에서 배운거 써먹기

그러다 규칙을 찾아보려고 생각해보니까 순서쌍의 개수랑 약수의 개수랑 같다는 사실 깨닫고 후다닥 코드 작성하기..ㅎ

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

오늘은 여기까지.. 할테야.. 오늘도 공부한 나에게 박수를 보내며 끝내겠습니다..👏👏👏

profile
긍정왕되기

0개의 댓글