Java

    프로그래머스 코딩테스트 2019 카카오 개발자 겨울 인턴십 튜플 자바(java) 풀이

    프로그래머스 코딩테스트 2019 카카오 개발자 겨울 인턴십 튜플 자바(java) 풀이

    문제 핵심은 정규식을 이용해서 식을 정리하고 숫자가 등장하는 횟수를 저장하여 많이 나오는 수부터 배열에 넣어주면 해결 문제 특성이 hs의 value값이 모두 다르므로 value를 index값으로 이용하여 answer를 완성했다. import java.util.*; class Solution { public int[] solution(String s) { HashMap hs = new HashMap(); s=s.replaceAll("[\\{\\}]",""); String [] temp = s.split(","); for(String x:temp){ hs.put(x,hs.getOrDefault(x,0)+1); } int[] answer = new int[Collections.max(hs.values())];..

    프로그래머스 코딩테스트 스택/큐 기능개발 자바(java) 풀이

    프로그래머스 코딩테스트 스택/큐 기능개발 자바(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

    프로그래머스 코딩테스트 연습 LV1 2020 카카오 인턴십 키패드 누르기 자바(java) 풀이

    프로그래머스 코딩테스트 연습 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) 풀이

    프로그래머스 코딩테스트 연습 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 소수 찾기 자바(java) 풀이

    프로그래머스 코딩테스트 연습 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) 풀이

    프로그래머스 입문 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

    프로그래머스 입문 LV0 치킨 쿠폰 자바(java) 풀이

    프로그래머스 입문 LV0 치킨 쿠폰 자바(java) 풀이

    아이디어는 맞았지만 불필요한 코드가 너무 많았다. class Solution { public int solution(int chicken) { int answer = -1; int count =0; int temp =0; while(chicken>=10){ count+= chicken/10; temp += chicken%10; chicken=chicken/10; if(temp>=10){ count++; temp-=10; chicken+=1; } } if(temp+chicken>=10){ count++; } return count; } } 간결한 코드 class Solution { public int solution(int chicken) { int answer = 0; while (chicken >= 1..

    프로그래머스 입문 LV0 등수 매기기 자바(java) 풀이

    프로그래머스 입문 LV0 등수 매기기 자바(java) 풀이

    처음 생각한 아이디어. 1. 배열 데이터의 등수를 데이터의 인덱스로 줄 세운다. [200,100,300] -> [2,0,1] (300, 200, 100 순서) 2. idx를 돌면서 데이터 배열의 index값으로 값을 불러와서 값이 같을 때 순서를 등수를 그 자리에 써준다. [2,0,1] data[idx[0(i)]] = data[2]= 300 300 이랑 같은 값을 0(i)위 로 바꿈 data[idx[1]] = data[0]= 200 200 이랑 같은 값을 1위로 바꿈 동순위는 앞에서 걸려주므로 처리됨. 1위가 2개라면 같은데이터는 1위, 1위로 바뀜 package array; import java.util.Arrays; public class ArrayTest2 { public static void ma..

    프로그래머스 LV0  평행 자바(java) 풀이

    프로그래머스 LV0 평행 자바(java) 풀이

    내 아이디어 4개의 점에서 나올 수 있는 모든 기울기를 HashSet에 넣어서 모든 경우의 수 (6) 보다 작다면 평행이 존재 위와 같은 아이디어로 제출을 했더니 3번만 실패. 반례 X축 평행 Double type 은 0.0 과 -0.0을 다른 값으로 처리함. (double은 0.0과 -0.0을 같은 값으로 처리) 3번이 0.0 과 -0.0이 있는 반례 케이스이다. 이 문제에서 Y축 평행 케이스는 나오지 않았지만 나오게 된다면 처리를 해줘야 한다. Y축 평행 double PI= Double.POSITIVE_INFINITY; double PI2= Double.NEGATIVE_INFINITY; PI와 PI2는 같지 않다. Double PI3= Double.POSITIVE_INFINITY; Double PI4..

    프로그래머스 LV1 2016년 (요일 구하기) 자바(java) 풀이

    프로그래머스 LV1 2016년 (요일 구하기) 자바(java) 풀이

    월 일 을 숫자로 표현하여 요일을 구한다. 1월 1일 = 1 : 금요일 1월 2일 = 2 : 토요일 1월 8일 = 8, (8%7)=1 금요일 1월은 31일까지 2월 1일 = 32, (32%7)=4 월요일 class Solution { public String solution(int a, int b) { String [] days={"THU","FRI","SAT","SUN","MON","TUE","WED"}; //index 1 이 "FRI" int [] nums ={0,31,29,31,30,31,30,31,31,30,31,30,31}; int temp =0; for(int i=0;i