반응형

알고리즘/프로그래머스 Level1 49

[프로그래머스,java] Level1: 체육복 (2021년 7월 28일 업데이트버전)

문제분석: 레벨 1치고는 꽤 어렵고 함정이 많은문제다. reserve가 reserve번호에 1차이가나면 lost에게 빌려줄수있다. 만약, reserve가 lost당햇다면, 빌려줄수 없다. 즉, 배열에서 제외 시켜버려야한다. 배열은 이미 선언해버린 시점에서 삭제가 안되니, 제외할 원소를 음수로 변형(-1) 시킬 예정이다. 여기서 많은사람이 간과 하는게 제한사항 5번이다. 제한사항 5번을 최 우 선 처리해야지 문제가 일어나지않는다. 왜냐? n= 5 lost[1,2,3] reserve[2,3,4] 라고 생각해보자. 5번을 나중에 처리한다고 생각해보자. 1->2번을 빌리고 2->3번 3->4번 을 빌린다. 이렇게 빌리면 5명모두가 가능하다. 5번을 최우선 처리하면, 2,3은 배열 에서 제외(변형)대어, lost..

[프로그래머스,Java] Level1 : 위클리 챌린지 1주차

문제분석: 매우 간단한문제였다. price*count 증가 수 마다 더해준뒤 money를 뺀값을 반환하면된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution { public long solution(int price, int money, int count) { long answer = -1; long sum=0; for(int i=count;i>0;i--){ sum+=i*price; } if(sum 2. 반복문써야겟다 라고 생각햇지만 이분은 일정한 규칙을보고 바로 등차수열공식을 대입해 연산속도를 줄엿다. 이런건 반드시 배워야하는 스마트한 코딩이라고 생각한다.

[프로그래머스,Java] Level1 : 완주하지 못한 선수

문제분석: 문제와 제한사항을보면, 완주하지 못한 선수가 단 1명이다 여러명이라면, 다른방법으로 접근을해야하지만 1명이니 심플하게 접근해야한다. 문제풀이: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { Arrays.sort(participant); Arrays.sort(completion); for(int i=0;i

[프로그래머스,Java] Level1 : 폰켓몬

문제분석: 문제만 잘 이해하면 쉬운문제다. 요점은, 우리는 N마리의 포켓몬중 N/2마리를 뽑고싶은데, 뽑아도 최대한 많이, 중복없이 뽑고싶어한다. 그래서 중복없이 최대한 몇마리를 뽑을수 있느냐를 묻는 문제다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import java.util.*; class Solution { public int solution(int[] nums) { int answer = 0; int max_choice =nums.length/2; Set set =new HashSet(); for(int data:nums){ set.add(data); } if(set.size()>=max_choice){ answer=max_choice; } else{ an..

[프로그래머스,Java] Level1 신규 아이디 추천

문제분석 할것도없이 문제 설명대로 시키는대로만 하면댄다. 단순히, 문자열다루는 문법을 얼마나 아느냐 테스트다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 class Solution { public String solution(String new_id) { String answer = ""; //1단계 new_id=new_id.toLowerCase(); //2단계 new_id=new_id.replaceAll("[^0-9a-z_.-]",""); //조건을 제외한목록 //3단계 new_id=new_id.replaceAll("[.]+",".");//연속된 마침표 .로 치환 //4..

[프로그래머스,Java] Level1 : 모의고사

문제분석: 1번, 2번 3번 수포자의 찍는 규칙을 살펴보자 1번 : 1 2 3 4 5 반복 2번: 2 1 2 3 2 4 2 5 반복 3번: 3 3 1 1 2 2 4 4 5 5 반복 (물론, 2번을 더 심도있게 파악하면 홀수는 2로 고정이고, 짝수는 2를제외해 1 3 4 5순 반복인데 규칙이 짧고 일정하게 반복을하기에, 반복하는 숫자열을 사용하는것이 더 심플하다. 만약 찍는 규칙이 반복하지않고 길다면, 후자의 방식을 택해야한다.) 시험정답을 입력받아서, 제일 점수가 높은 사람을 return하고, 동점자가 있으면 모두 return해야한다.(이때, 오름차순) 문제풀이: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 i..

[프로그래머스,Java] Level1 : 로또의 최고 순위와 최저 순

문제 분석 : 로또 당첨번호인 win_nums 와 , 민우가 구매한 로또번호인 lottos 배열이 입력으로 주어졌다. win_nums와 lottos가 일치하는 갯수에 따른 순위를 구하는 문제다. 근데 민우가 번호를 잊어먹엇고, 잊어먹은 번호를 0으로 가정하였다. 문제는 0이 만약에 모두 틀렷을 경우와, 0이 모두 맞았을경우의 순위를 구해달라고 하는게 포인트다. 문제풀이: win-nums와 , 민수가 적은 lottos가 정확히 맞는 갯수를 저장할 correct 변수, 민수가 잊어먹어버린 번호 0을 세는 zero 변수를 저장을 해두었다. 이렇게 해두면 correct +zero= '0이 모두 맞았을경우의 갯수' , correct= '0이 모두 틀렸을 경우의 갯수'가 성립한다. 그리고, 맞은 개수 (index)..

[프로그래머스,Java] Level1 : 소수 만들기

문제 설명 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 ..

반응형