[프로그래머스 / Java] 연속 펄스 부분 수열의 합
·
CodingTest/Algorithm
1. 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [문제 요약]부분 수열의 합 중 가장 큰 값을 구하라 2. 생각1. 코딩테스트는 두 가지 유형이 있지문제가 길어 문제가 요구하는 방향을 이해하면 풀 수 있는 문제와문제가 짧어 뭘 구하라는지 알겠는데 어떻게 구해? 하는 문제이 문제는 후자의 경우... 문제 보자마자 든 생각: 뭐 어떻게 구해?2. 펄스 수열 이용해서 2개의 배열 만드는 것까지는 쉬움3. "수열의 부분 수열의 최댓값" 이거 구하는게 관건같은데...하나씩 다 만들어보기에는 sequence의 길이 제한이 커서 안될꺼같다4. 30분정도 고민해보고 인터넷 찾아봤는데 이미 "카데인 알고리즘"..
[프로그래머스 / Java] 입국심사
·
CodingTest/Sorting & Thinking
1. 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [문제 요약]모든 사람이 심사를 받는데 걸리는 시간의 최솟값 구하기숫자의 범위가 크다 2. 생각대로 풀기숫자의 범위가 크다 -> 이분 탐색 (코드 설명 주석은 AI 활용)import java.util.Arrays;class Solution { public long solution(int n, int[] times) { // n: 입국심사를 기다리는 사람 수 // times: 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 // 심사 시간을 오름차순으로 정렬 Arrays.sort(..
[프로그래머스 / Java] 징검다리 건너기
·
CodingTest/Sorting & Thinking
1. 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [문제 요약]최소 몇 명이 건널 수 있는지 구하기숫자가 적힌 배열, 건널 수 있는 길이숫자의 범위가 크다 (원소의 값이 최대 2억) 2. 생각대로 풀기숫자의 범위가 크기 때문에 무작정 반복문을 돌리면 안된다.N명이 건널 수 없다면, N보다 큰 수의 사람들도 건널 수 없음.N명이 건널 수 있다면, N보다 작은 수의 사람들도 건널 수 있음.-> 이진탐색으로 좁혀가면서 N찾기import java.util.*;class Solution { public int solution(int[] stones, int k) { int left = ..
[프로그래머스 / Java] 가장 먼 노드
·
CodingTest/BFS
1. 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr[문제 요약]1번 노드에서 가장 멀리 떨어진 노드의 갯수 구하기n개의 1~n까지 적힌 노드가 있는 그래프가장 멀리 떨어진 노드: 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드 2. 생각대로 풀기최단 경로 문제 -> 가중치가 없다 -> 시작점이 여러개가 아니다 -> BFSimport java.util.*;class Solution { ArrayList> graph = new ArrayList(); public int solution(int n, int[][] edge) { // 그래프 초기화 for ..
[프로그래머스 / Java] 숫자 짝꿍
·
CodingTest/Java로 푼 코딩 테스트
풀이Map 형식으로 X, Y의 문자 빈도를 계산한다.9부터 0까지 내림차순으로 반복문을 만든다.두 개의 Map의 같은 키가 있으면 값 중 작은값 만큼 숫자를 추가한다(String)결과에 따라 리턴값을 변경한다.import java.util.*;class Solution { public String solution(String X, String Y) { // 두 숫자의 각 숫자 빈도를 저장할 맵 생성 Map countX = new HashMap(); Map countY = new HashMap(); // X의 숫자 빈도 계산 for (char c : X.toCharArray()) { countX.put(c, countX..
[프로그래머스 / Java] 점 찍기
·
CodingTest/Java로 푼 코딩 테스트
첫번째 풀이import java.util.*;class Solution { public long solution(int k, int d) { long answer = 0; for(int a=0; a 결과 시간초과 몇개와 다수의 실패가 보인다.제한 사항의 k와 d의 길이가 100만이여서 시간초과가 뜨는 것 같다.이 방식은 계속 시간복잡도가 클거 같아 다른 방식을 생각해보았다.  두번째 풀이import java.util.*;class Solution { public long solution(int k, int d) { long answer = 0; for(int a=0; a 결과일단 시간초과 문제는 해결하고 테스트 수행 속도도 반으로 줄었다. 세번..
[프로그래머스 / Java] 혼자 놀기의 달인
·
CodingTest/Java로 푼 코딩 테스트
1. 해답 코드import java.util.*;class Solution { static boolean[] visit; static int depth; public int solution(int[] cards) { int answer = 1; int len = cards.length; visit = new boolean[len]; List list = new ArrayList(); for (int i = 0; i  2. 해설노드들이 이어져있고 하나씩 탐색하다가 탐색 할 수 없는 곳에서 멈춘다 -> DFS 문제 solution 메서드는 배열을 순회하면서 방문하지 않은 노드를 발견하면 DFS를 시작합니다. open 메서드는 해당..
[프로그래머스 / Java] 과일장수
·
CodingTest/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 / 코딩테스트] 프로그래머스 - 카펫
·
CodingTest/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..