목록java (21)
공부하는 스누피
https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net 생각과정 - 벽을 3개 세우는 모든 경우의 수 구하기 => DFS - 벽 다 세우면 바이러스 퍼뜨리기 - 상하좌우로 퍼져나가는데, 감염된 칸에서도 퍼져나가야 한다 - 재귀함수 spread를 사용해서 감염된 칸의 상하좌우로 퍼져나가는데, 벽을 만나면 멈춘다. 이때 감염시킨 칸에서 spread 함수를 새로 호출시킨다. 다 퍼뜨리면 감염 지도를 return한다. - spread 종료 후 안전 영역을 검사한다. 구..
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, �� www.acmicpc.net 생각과정 - 모든 경우의 수를 탐색해 최대 최소를 구해야 한다 => dfs - 계산할 때마다 연산자 개수를 감소시킨다. - 계산이 끝나면 최대 최소 인스턴스 변수와 비교한다. 구현 package baekjoon; import java.util.Scanner; public class b14504 { public int max = -1000..
https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 생각과정 - for문을 구현할 때, r은 i 인덱스로, c는 j인덱스로 생각한다. - 현재 위치가 (i, j)라면 북쪽은 (i-1, j), 동쪽은 (i, j+1), 남쪽은 (i+1, j), 서쪽은 (i, j-1)이라고 본다. - 청소한 부분은 벽, 빈칸과 구분되어야 하니까 2로 정한다. - 청소하고 왼쪽으로 돌다가 앞에 빈칸있으면 움직인다. 빈칸(0)이 없으면 후진한다. 후진할 때 벽이 있으면 ..
https://programmers.co.kr/learn/courses/30/lessons/17681# 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 생각과정 - 각 지도 배열에서 같은 인덱스의 정수를 이진수 문자열로 변환한다. - 둘 중 하나라도 1이 있다면 #를 추가한다. (OR 연산으로 풀 수 있음) 구현 class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answer = new String[n];..
https://programmers.co.kr/learn/courses/30/lessons/17680 코딩테스트 연습 - [1차] 캐시 3 [Jeju, Pangyo, Seoul, NewYork, LA, Jeju, Pangyo, Seoul, NewYork, LA] 50 3 [Jeju, Pangyo, Seoul, Jeju, Pangyo, Seoul, Jeju, Pangyo, Seoul] 21 2 [Jeju, Pangyo, Seoul, NewYork, LA, SanFrancisco, Seoul, Rome, Paris, Jeju, NewYork, Rome] 60 5 [Jeju, Pangyo, S programmers.co.kr 생각과정 - LRU 알고리즘은 오랫동안 사용하지 않는 것부터 삭제해 메모리 효율을 높..
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을..