[프로그래머스 / Java] 과일장수
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
1. 문제  2. 생각문제가 길긴한데 찬찬히 살펴보면과일장수가 가능한 많은 사과를 팔았을 때 -> 아무리봐도 상자 몇개 제한 이라는 말이 없다 -> 비싼 순 m개씩 짤라서 팔면된다.Ex) 입출력 예시 1정렬 : 1 1 1 / 2 2 3 3 => 상자 1개 나옴 m = 4 개씩 묶기 : (위에서 3개 = 2)*m = 2 * 4 = 8Ex) 입출력 예시 2정렬 : 1 1 2 / 2 2 2 / 4 4 4 / 4 4 4 => 상자 4개 나옴 m = 3 개씩 묶기 : (4*m) (4*m) + (2*m) + (1*m) 계산 : 4*3+ 4*3 + 2*3 + 1*3 = 24+6+3 = 33-> 음... 정렬하고 m개씩 짜르고... 그 안에서 계산하면 된다... 3. 코드import java.util.*;class S..
[Kotlin / 코딩테스트] 프로그래머스 - 카펫
·
알고리즘 & 코딩 테스트/Kotlin으로 푼 코딩 테스트
1. 문제 2. 생각대로 풀이 수학적으로 어떠한 공식이 나올꺼 같았다. 해보니 몇가지 공식이 나왔다 노란색 가로의 길이 = X, 세로의 길이 = Y 라고 할 때, xy = yellow 2(x+y)+4 = brown (x+2)*(y+2) = yellow + brown x와 y는 양의 정수이다. 3가지 공식을 반복문을 돌려서 찾았다. class Solution { fun solution(brown: Int, yellow: Int): IntArray { var x = 1 while(true) { if(2*x +(2*yellow)/x==brown-4) { if((yellow/x+2)*(x+2) == brown + yellow) { break; } } x++ } return intArrayOf(yellow/x+2..
[Java / 코딩테스트] 겹쳐진 압축 해제
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
1. 생각 전형적인 스택 문제 ")"까지 보고 반복문 2. 코드 import java.util.*; class Solution { public String solution(String s){ String answer = ""; Stack st = new Stack(); for (char c : s.toCharArray()) { if(c == ')') { String tmp = ""; while (!st.empty()) { String t = st.pop(); if(t.equals("(")) { String num = ""; while (!st.empty() && Character.isDigit(st.peek().charAt(0))) { num = st.pop() + num; } String res = "..
[Java / 코딩테스트] 최대 길이 연속수열
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
1. 생각 중복을 제거해야 하므로 Set을 쓰면 될거같은데 정렬을 해야하나? nums의 길이가 300,000 이므로 시간복잡도를 최대한 적게 써야한다. 정렬 없는 HashSet으로 해결 2. 코드 import java.util.*; class Solution { public int solution(int[] nums){ int answer = 0; HashSet numSet = new HashSet(); for (int num : nums) { numSet.add(num); } for (Integer i : numSet) { if(numSet.contains(i-1)) continue; int cnt = 0; while (numSet.contains(i)) { cnt++; i++; } answer = M..
[Java / 코딩테스트] 청소 문제
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
1. 생각 일단 k번 반복해야 한다. -> for(k) 초기위치 (0,0) 방향 0 : 오른쪽 1 : 아래 2 : 왼쪽 3 : 위 조건에 따라 이동 2. 생각대로 코딩 [ 코드 ] public int[] solution(int[][] board, int k){ int[] answer = new int[2]; //초기화 answer[0] = 0; answer[1] = 0; int direction = 0; for (int i = 0; i < k; i++) { boolean change = false; //방향전화 변수 // 넘어가면 방향 전환 if (direction == 0 && answer[1] == board.length-1) {change = true;} if (direction == 1 && an..
[Java / 코딩테스트] 사다리타기
·
알고리즘 & 코딩 테스트/Java로 푼 코딩 테스트
1. 생각 일단 n번 반복해야 한다. -> for(n), 임시값 만들기 ladder[i][j]에 값이 포함되면, 오른쪽으로 이동, 임시값 +1 ladder[i][j]+1에 값이 포함되면, 왼쪽으로 이동, 임시값 -1 임시값 -> 문자(A,B,C,D,E...)로 변경 2. 생각대로 코딩 [ 코드 ] import java.util.*; public class Problem01 { public char[] solution(int n, int[][] ladder){ char[] answer = new char[n]; int[] temps = new int[n]; for (int i = 1; i < n+1; i++) { int temp = i; for (int j = 0; j < ladder.length; j++..
마볼링
'코딩테스트' 태그의 글 목록