목록Algorithms/코딩테스트 문제풀이 (23)
공부하는 스누피
https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 프렌즈4블록. 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙�� programmers.co.kr 생각과정 - 순서 1) 2*2 형태의 같은 블록이 있는지 확인 -> 없으면 종료 2) 1) 조건에 맞는 블록 터뜨리기(지우기) 3) 블록 밑에 빈공간 없도록 떨어뜨리기 -> 1)로 이동 - 2*2 형태가 여러개 겹쳐져도 모두 터뜨려야 함. => 1) 조건에 해당하는 블록에 지울 거라고 표시하기 (다른 블록과도 비교해야 하니까 문자를 바꾸면..
https://programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브�� programmers.co.kr 생각과정 - 문제에서는 집합으로 자카드 유사도를 설명했지만, 원소의 중복을 허용하기 때문에 Set의 subclass를 사용할 수 없다. - 자카드 유사도는 다음과 같이 나타낼 수 있다. J(A, B) = 교집합 원소 수/합집합 원소 수 (A, B가 공집합일 경우 1) - HashMap을 사용하면 문자 클러스터를 key로, 원소의 개수를 ..
https://programmers.co.kr/learn/courses/30/lessons/64061?language=java 코딩테스트 연습 - 크레인 인형뽑기 게임 [[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 2019 카카오 개발자 겨울 인턴십 문제입니다. 생각과정 - 바구니는 스택으로 구현 - 크레인은 이차원 배열로 나타낸다. - 크레인을 뒤집어서 배열로 구현하기 쉽게 만들자. 주어진 크레인 배열은 x축이 크레인 바닥이다. 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 ㅡㅡㅡㅡㅡ move 배열이 크레인이 내려갈 column을..
https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 생각과정 - 배열의 일부분을 추출하고, - 거기서 k번째 수를 찾는다! - i, j, k가 이차원 배열로 주어져 있으니 for문을 사용해 순회하면서 k번째 수를 넣는다. - i, j, k 쌍의 개수를 N으로 하면, 시간복잡도는 O(N)이다. 구현 import java.util.Arrays; class Solution { public int[] solution(int[] array, int[][] commands) { int[] ..
https://programmers.co.kr/learn/courses/30/lessons/42840# 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 �� programmers.co.kr 생각과정 - 3가지 패턴별로 답안을 작성한다 - DFS 함수를 만들어 완전탐색 알고리즘을 재사용한다 - 재귀를 사용해 문제가 많을수록 시간이 오래 걸리는 단점이 있다. => 채점할 때 효율성 검사를 안하는걸 보니 상관없는듯? 구현 import java.util.ArrayList; class Solution { public int[] solution(int..
https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr https://snoop-study.tistory.com/2 [JAVA] 완주하지 못한 선수 - ArrayList https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 ..
https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 생각 과정 - 완주자, 참가자 한명씩 이름을 비교하려면 시간복잡도가 O(n^2)이나 된다. - 순회를 최대한 적게 하는 방법=> 이름 첫글자로 사전을 만들어서 비교하자 => 이차원 배열로 만들었지만 요소 삭제/추가하는 과정에서 한번 순회가 필요함. - ArrayList 배열로 만들면 추가적인 for문 없이 사전을 간편하게 관리할 수 있음...