분류 전체보기
프로그래머스 코딩테스트 스택/큐 기능개발 자바(java) 풀이
아이디어 방향은 맞았고 문제도 풀었지만 효율성이 너무 낮게 나왔다. 좀 더 야무진 코딩을 해야 할 것 같다. import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { int len = progresses.length; int [] temp = new int[len]; Queue q = new LinkedList(); int max =0; int sum =0; for(int i=0; i
프로그래머스 코딩테스트 연습 햄버거 만들기 자바(java) 풀이
Stack으로 접근하는 건 당연했지만 어떤 식으로 풀이해야 할지 못했다. Stack에 모두 넣어서 진행한다면 시간 초과가 나기 때문에 Stack에 넣어줄때마다 체크하는 게 더 빠르게 작동한다. Stack의 길이가 4이상일때 계속 1231이 있는지 체크해준다. 1231을 끝에서부터 체크하면 완벽하게 체크가 될지 의문이 있었지만 완벽하게 처리된다. 모르면 외워. class Solution { public int solution(int[] ingredient) { int[] stack = new int[ingredient.length]; int sp = 0; int answer = 0; for (int i : ingredient) { stack[sp++] = i; if (sp >= 4 && stack[sp -..
프로그래머스 코딩테스트 연습 푸드 파이트 대회 자바(java) 풀이
String 양쪽에서 대칭에서 더해줄 때 answer = i + answer + i 기억하자 class Solution { public String solution(int[] food) { int sum=0; for(int i=0;i0){ if(food[i]%2!=0) food[i]=food[i]-1; } sum+=food[i]; } int [] size =new int[sum]; int plus=0; int minus=size.length-1; size[size.length/2]=-1; for(int i=1;i
프로그래머스 코딩테스트 연습 LV1 2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천 자바(java) 풀이
적절한 정규식 사용법만 알면 쉽게 풀 수 있는 문제 정규식 사용법을 다시한번 복습할 때 풀어보면 좋을 것 같다. class Solution { public String solution(String new_id) { int len =new_id.length(); new_id = new_id.toLowerCase(); new_id=new_id.replaceAll("[^a-z0-9._-]",""); new_id=new_id.replaceAll("[.]+","."); if(new_id.charAt(0)=='.'){ if(new_id.length()>=2){ new_id=new_id.substring(1,new_id.length()); }else{ new_id=""; } } if(new_id.length()>=2..
프로그래머스 코딩테스트 연습 LV1 2020 카카오 인턴십 키패드 누르기 자바(java) 풀이
단순해 보이는 문제를 단순하게 푸는 것은 쉽다. 카카오에서 요구하는것은 좀 더 효율 좋고 창의적인 코드가 아닐까 싶다. 나의 코드는 너무 단순하고 노가다성이 강했다. import java.util.*; class Solution { public String solution(int[] numbers, String hand) { StringBuilder sp = new StringBuilder(); int [][] phone ={{1,2,3},{4,5,6},{7,8,9},{-1,0,-2}}; int [] lNow = {3,0}; int [] rNow = {3,2}; int [] Now={0,0}; int left=0; int right=0; for(int xy :numbers){ if(xy==1){ sp.a..
프로그래머스 코딩테스트 연습 LV1 2019 KAKAO BLIND RECRUITMENT 실패율 자바(java) 풀이
HashMap으로 접근했다가 70점 맞고 다른 방법을 생각해봤다. 훨씬 단순하게 풀 수 있었다. 실패율을 내림차순 정렬하고 for문 돌리면서 value가 같으면 그에 맞는 인덱스를 추출하고 -1로 할당한다. 실패율이 같아도 낮은 인덱스부터 방문하기 때문에 정답에 만족할 수 있다. import java.util.*; class Solution { public int[] solution(int N, int[] stages) { int[] answer = new int [N]; double []temp = new double[N+1]; for(int i : stages){ // 스테이지별(index) 머무르는 사람 수 저장 if(i==N+1){ // N까지만 이용 continue; } temp[i]+=1; }..
프로그래머스 코딩테스트 연습 LV1 2018 KAKAO BLIND RECRUITMENT [1차] 다트 게임 자바(java) 풀이
수학을 필요로하는 문제라기보단 주어진 조건을 어떻게 잘 구현할지를 고민해야한다. 나의 풀이. 정답은 맞았지만 정말 비효율적이고 멍청하게 코딩했다. String 문제가 나오면 일단 분해하려는 습관이 있는것같다. String 자체에서 해결하거나 stack을 활용해보자. import java.util.*; class Solution { public int solution(String dartResult) { String [] temp = dartResult.split(""); String [] word = new String[3]; int t=0; int x=0; for(int i=0; i
Java 코딩 테스트] 수 다루기 : 약수 소수 ..
코딩테스트를 효율적으로 해결하기위해서는 범위를 줄여주는 노력이 필요하다. 기본적인 범위줄이기 문제 약수의 개수. 약수의 합 약수의 개수 나머지가 0인 수를 찾는 범위를 제곱수로 제한한다. N의 약수를 구할 때는, 1부터 N의 제곱근 까지의 수만 0으로 나누어 떨어지는지 확인하면 된다. // n의 약수의 수 int n; for(int i=1;i*i
프로그래머스 코딩테스트 연습 LV1 소수 찾기 자바(java) 풀이
소수찾기 : 코딩테스트 기초 문제중 기초 문제. 문제점 1 수가 커지면 커질수록 시간이 걸린다. o(N) 2~1000000000 자연수에서 소수를 찾아라: 0(N^2) 해결방법 1. 소수판별시 범위를 루트 n으로 줄인다. (제곱수전 까지 나눠지는 수가 나오지않는다면 그 이후에도 나오지않는다.) (약수구하기) 2. 에라토네스의 체 알고리즘 :1번을 보완한 방법. 범위를 제한하면서 다음에 판별할 숫자도 미리 판별한다. class Solution { public int solution(int n) { boolean [] arr = new boolean[n+1]; // n까지 소수 판별하기 위한 배열 arr[0]=true; arr[1]=true; // 0과1 은 소수 x for(int i=2;i*i
프로그래머스 입문 LV0 겹치는 선분의 길 자바(java) 풀이
겹치는 선분의 길이 까지는 구했는데 3중으로 겹치는 선분의 길이 처리를 못했다. 노가다로 구했었는데 수학적 사고가 부족했다. 선분들이 지난 점의 횟수가 2 이상일 때를 생각하면 3중으로 겹치는 부분도 처리할 수 있었다. (2이상이여도 +1 처리) import java.util.*; class Solution { public int solution(int[][] lines) { Map count =new HashMap(); for(int i=0; i