본문 바로가기

알고리즘/프로그래머스

(28)
[카카오 2021 인턴십] 표 편집 / 다양한 풀이 [JAVA] 문제링크 : https://programmers.co.kr/learn/courses/30/lessons/81303 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr 1. 이중연결리스트 2. 인덱스트리 3. 펜윅트리 문제를 가장 단순히 생각해보면, 표의 k번 위치에서 U나 D 입력이 들어왔을 때 U번 이동하면서 제거된 행은 횟수로 포함하지 않고 이동하면 될 것 같다. 또 C 입력에 대해서는 k번 위치의 행을 지우고 맨 아래가 아니면 제거되지 않은 아래행을 가리키도..
[프로그래머스] N으로 표현 [JAVA] 문제링크 : https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr 모든 경우의 수를 리스트에 담아서 계속 결과를 이어갔다. 중복된 결과가 리스트에 담겨서 구현했을 시 시간초과를 예상했지만 시간초과는 나지 않았다. Set 으로 구현하는게 맞는 것 같다. 밑에는 수정 전 코드 => 리스트를 Set으로 바꿔주어야한다. 문제 분류인 dp하고는 맞지 않는것 같다 import java.util.*; class Solution { public static ArrayList adj[]; public static int solution(int N, int number) { adj = new ArrayList[..
[프로그래머스] kakao 2019 겨울 인턴십 / 호텔 방 배정 [JAVA] 문제링크 : programmers.co.kr/learn/courses/30/lessons/64063 코딩테스트 연습 - 호텔 방 배정 programmers.co.kr 기본적인 생각으로 자신이 원하는 방이 없다면 그 방 번호보다 큰 것중 비어있는 방을 탐색하면서 배정하는 방식을 생각할 수 있다. k는 1 이상 10^12 이하인 자연수기 때문에 단순하게 배열로 해당 인덱스가 방이 배정 됐는지 아닌지 판단이 힘들다. 그래서 해시맵을 사용했다. 위 과정에서 문제점은 비어있는 방을 순차탐색 하는건 room_number가 20만이기 때문에 모든 값이 1일 때 약 20만*(20만-1)/2의 시간이 걸린다. 따라서 다른 방법이 필요한데 union find(Disjoint Set)를 사용했다. 어떤 사람이 1번방을 배정..
[프로그래머스] kakao 2019 겨울 인턴십 크레인 인형뽑기 게임 [JAVA] 문제링크 : programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 명령어대로 인형을 뽑아서 어떤 공간에 차곡차곡 쌓다가 연속으로 2번 같은 인형이 겹치면 점수를 획득하는 게임이다. 위 한줄을 읽으니 당연 스택으로 구현하면 편해보인다. 그렇게 생각하니 인형이 있는 N*N 공간도 스택으로 구현하는 방법이 생각나서 그렇게 했다. 맵의 최대 열이 30이므로 한 열마다 스택 하나씩 해서 30개를 만들면 될 것 같다. 맵을 구성 후에는 명렁어대로 moves[i]열의..
[프로그래머스] 2021 dev-matching 다단계 칫솔 판매 [JAVA] 문제링크 : programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr (전처리) enroll 순서대로 해당 이름을 1~N까지 고유 번호를 HashMap에 저장했다. 또, referral 배열 정보로 해당 유저의 부모의 번호를 par 배열에 저장했다. seller 정보와 amount를 가지고 최초 이득 유저와 돈을 가지고서 다단계 과정을 수행했다. while문이 그것이며, 해당 코인을 본인에게 더하고 부모에게 넘겨주는 식이다. ..
[프로그래머스] 2021 dev-matching - 행렬 테두리 회전하기 [JAVA] 문제링크 : programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 머리가 안돌아가서 혼났다. 인덱스를 잘 생각해서 회전시키는 문제다 class Solution { public static void show(int arr[][]){ System.out.println(); for(int i=0;i
[프로그래머스] 2021 dev-matching 로또의 최고 순위와 최저 순위 [JAVA] 문제링크 : programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 카운트 배열을 사용했다 public int[] solution(int[] lottos, int[] win_nums) { int[] answer = new int[2]; int []cnt = new int[46]; for(int i=0;i=2){ answer[1] = 7-minAns; }else{ answer[1] = ..
[프로그래머스] kakao 2021년 블라인드 (광고삽입) [JAVA] 문제링크 : programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 카카오 블라인드 문제를 오랜만에 풀어보았다. 어느 시간에 공익광고를 넣는 것이 많은사람들이 보겠는가 하는 단순한 문제이다. 문자열로 주어지는 시간을 초 단위로 바꾸어서 배열에 저장하고 풀었다. => 100:00:00은 36만초이다. => 배열 크기 36만 광고를 넣을 수 있는 시간이 adv_p..