마트철수

[036] 프로그래머스: 완주하지 못한 선수, 소수 만들기, 예산 본문

KB IT's Your Life/교육

[036] 프로그래머스: 완주하지 못한 선수, 소수 만들기, 예산

마트스 2024. 6. 28. 17:36

 
2024.06.28(금)
 
알고리즘 1일차

특강이기에
세부 내용은 노션에 기록
티스토리에는 출퇴근 복습용 코드만 기록
 


 
완주하지 못한 선수
 
▼ 내가 작성한 코드

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        int n = participant.length-1;
   
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            if(participant[i].equal(completion[j])){
                  return "";  
    }
    }
    }
    return participant[i];   
    }
}

 
> 배열의 첫번째 값이 answer로 추출됨
> 3개 중 2개 답
 
▼ 1차 작성 코드 (시간 초과)

import java.util.*;

class Solution {
    public String solution(String[] participant, String[] completion) {
//         정렬
        Arrays.sort(participant);
        Arrays.sort(completion);   
        
//         i 0~n-1 순회
        for(int i=0; i<completion.length; i++){
        if(!participant[i].equals(completion[i])){
            return participant[i];
        }
        }
        return participant[participant.length - 1];
    }
}

 
> import java.util.*; → 인텔리제이 자동완성?
> 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자

#Arrays.sort(participant) > 순서대로 배열 정렬
# equal 이 아닌 equals
 
▼ 정답 코드
해시코드 질문 필요
 
소수 만들기
 
▼ 내가 작성한 코드

class Solution {
    public int solution(int[] nums) {
        int answer = -1;
        sum += answer;
        Arrays.sort(nums);
        
        for(int i = 0; i < nums.length; i ++){
            for(int j = 0; j <nums.length; j++){
                for(int z = 0; z < nums.length; z++){
                    if((int result = nums[i] + nums[j] + nums[z])%2 != 0 | (int result = nums[i] + nums[j] + nums[z])%3 != 0 |)
                        return answer;
                }
            }
        }

        System.out.println("Hello Java");

        return answer;
    }
}

 
> 오류
 
▼ 1차 작성 코드

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        int counter = 0;
        
        for(int i = 0; i < nums.length - 2; i ++){
            for(int j = i+1; j <nums.length - 1; j++){
                for(int k = j+1; k < nums.length; k++){
                    if(isPrime(nums[i] + nums[j] + nums[k])) counter++;
                }
            }
        }
        return counter;
    }
    private boolean isPrime(int num) {
        for (int i = 2; i < num; i++) {
            if (num % i == 0) return false;
        }
        return true;
    }
}

 
> isPrime 함수는 개발자(내)가 구현
# %는 나머지 구하기
 
예산
 
▼ 내가 작성한 코드

import java.util.*;

class Solution {
    public int solution(int[] d, int budget) {
        int sum = 0;
        int count = 0;
        
        for(int i=0; i < d.length; i++){
            sum += d[i];
            count++;   
        }
            return count;
        }
    }

 
> 2개 중 1개 성공(그냥 모든값이 들어가서..)
 

import java.util.*;

class Solution {
    public int solution(int[] d, int budget) {
        Arrays.sort(d);
        int result = 0;
        
        for(int price : d){
          budget -= price;
            if(budget < 0) break;
            result++;
        } 
            return result;
        }
    }

내가 작성한 코드