본문 바로가기

Java-Study

Java Study : 12주차 - 프로그래머스 문제풀이

https://school.programmers.co.kr/learn/courses/30/lessons/42862?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.Arrays;
class Solution {
    public int solution(int n, int[] lost, int[] reserve) {
        int answer = n - lost.length;
        
        Arrays.sort(lost);
        Arrays.sort(reserve);
        
        //여벌 체육복을 가져온 학생이 도난을 당한 경우
        for(int i=0; i<lost.length; i++) {
            for(int j=0; j<reserve.length; j++) {
                if(lost[i] == reserve[j]) { //도난 당학 학생과 여벌을 가져온 학생이 같으면
                    answer++;   //체육 수업을 들을 수 있는 학생 추가
                    lost[i] = -1;   //도난 당한 학생 목록에서 제외
                    reserve[j] = -1; //여벌 체육복 있는 학생 목록에서 제외
                }
            }
        }
        
        //도난 당한 학생에게 체육복을 빌려주는 경우
        for(int i=0; i<lost.length; i++) {
            for(int j=0; j<reserve.length; j++) {
                //여벌이 있는 학생의 앞이나 뒤 번호 중 도난 당한 학생이 있으면 빌려줌
                if((lost[i] - 1 == reserve[j]) || (lost[i] + 1 == reserve[j])) {    
                    answer++;   //체육 수업 들을 수 있는 학생 추가
                    reserve[j] = -1;    //여벌 체육복이 있는 학생 목록에서 제외
                    break;  //체육복을 빌려주었으니 다음 사람으로 넘어감
                }
            }
        }
        return answer;
    }
}

 

https://school.programmers.co.kr/learn/courses/30/lessons/42576

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.Arrays;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        Arrays.sort(completion);    //완주자 정렬
        Arrays.sort(participant);   //참가자 정렬

        for (int i = 0; i < completion.length; i++) {
            if(!completion[i].equals(participant[i])) { //정렬된 상태에서 다른값이 있으면 정지하고 값을 저장
                answer=participant[i];
                break;
            }
        }

        //완주자를 기준으로 for문을 돌리기 때문에 마지막 참여자가 미완주자인 경우 "" 값으로 값이 들어간다.
        //때문에 이런 경우를 조건문으로 작성해서 값을 넣어 준다.
        if(answer.equals("")) {
            answer = participant[participant.length - 1];
        }
        return answer;
    }
}

 

https://school.programmers.co.kr/learn/courses/30/lessons/42748

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.Arrays;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        
        for(int l =0; l < commands.length; l++) {
            int i = commands[l][0] - 1;
            int j = commands[l][1];
            int k = commands[l][2] - 1;
            
            int[] arrays = Arrays.copyOfRange(array, i, j);
            Arrays.sort(arrays);
            answer[l] = arrays[k];            
        }
        return answer;
    }
}