ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오 87

[백준] 14502번 연구소

www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 문제 설명 : 2차원 배열에서 0은 빈칸, 1은 벽, 2는 바이러스 일 때 벽을 3개 세운 뒤 바이러스를 퍼지지 않은 안전 영역 크기의 최댓값을 구하기 문제 풀이 : 완전탐색으로 벽을 3개 세우고, 바이러스를 퍼뜨린 후, 안전 영역 중 최댓값을 구하면 됩니다. 2차원 배열 백트래킹으로 벽을 세워주기 위해 wall() 함수를 사용합니다. 3개의 벽을 조합하여 한 번 세웠을 때마다 safe()라는 함수로 갑니다. safe() ..

[프로그래머스] 위장

programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 문제 풀이 : 옷의 종류를 key로 종류의 갯수를 value로 해시테이블을 구성합니다. 해시테이블에 옷의 종류가 없다면 갯수를 1로 넣어주고, 옷의 종류가 있다면 갯수를 1씩 늘려줍니다. ex) headgear : yellow_het , green_turban eyewear : blue_sunglasses 만약 yellow_het 을 골랐을 때 eyewear를 안 입는 경우도 있습니다. 그렇기 때문에 headgear를 안 입는 경우, eyewear를 안 입는 경우 각 각 +1 을 해주어서 경우의 수를 구해줍니다. 이 때 둘 다 안 쓰는 경우는 제외시켜주어야 하기..

[SWEA] 1954. 달팽이 숫자

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 풀이 : 방법 1) 달팽이 행렬의 패턴은 시계방향으로 90도 만큼 계속 꺾인다. ( ㄱ,ㄴ,ㄱ,ㄴ,... ) 그렇기 때문에 변수 turn을 1이거나 -1 일 때로 설정하여 좌표 x와 y가 방향 전환이 되도록 한다. ex) turn = 1, n=4 일 때 (0,0)(0,1)(0,2)(0,3) turn = 1, n=3 일 때 (1,3)(2,3)(3,3) turn = -1, n=3 일 때 (3,2)(3,1)(3,..

[프로그래머스] 완주하지 못한 선수

programmers.co.kr/learn/courses/30/lessons/42576?language=java 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr import java.util.Arrays; class Solution { public String solution(String[] participant, String[] completion) { Arrays.sort(participant); Arrays.sort(completion); int i; for (i = 0; i < co..

[백준] 1931 회의실 배정

www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 처음에는 시작 시간을 기준으로 정렬하여 맨 처음부터 끝까지 반복해서 돌면서 회의 종료시간보다 크거나 같은 회의 갯수를 세주어 가장 갯수가 많은 것이 답이 되도록 생각했지만 그렇게 하면 시간초과가 나기 때문에 잘못 생각한 방법이었습니다. 문제 풀이 : 그리디 알고리즘으로 이전 종료시간과 이후 시작 시간이 겹치지 않으면서 가장 종료시간이 빠른 것을 선택해 세주면 됩니다. 1. 먼저 종료 시간을 기준으로 정렬합니다. 2. 다음 시작 시간이 종료 시간보다 크거나 같으면 종료 시간을 갱신해주고 count 변수로 세줍니다. import ..

[백준] 11047 동전0

www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 문제 설명 : 동전은 총 N종류이고 K 가치의 합으로 만들기 위한 동전 개수의 최솟값을 구하라 문제 풀이 : 그리디 알고리즘 최소한의 개수로 만들기 위해서는 가장 큰 동전부터 선택하는 것이 최적의 해가 된다. 동전 K원을 만들기 위해서 오름차순이 되어있는 동전을 맨 뒤에서 부터 확인한다. 만약 동전 K원보다 클 경우 그냥 넘어가고 K원보다 같거나 ..

[백준] 11399번 ATM

www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 풀이 : 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구할 떄 중요한 점은 대기 시간의 합입니다. 최소로 하기 위해 먼저 걸리는 시간을 정렬해줍니다. 정렬한 후 대기시간을 더해주면 됩니다. import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scan..

[프로그래머스] 모의고사

programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 문제 설명 : 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers 에서 1번, 2번, 3번 중에 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담으시오. 문제 풀이 : 완전 탐색으로 먼저 1번, 2번, 3번 수포자들의 배열을 만들어줍니다. check 배열은 수포자들의 정답을 각각 세주기 위한 배열입니다. 이후 answers 배열을 처음부터 끝까지 반복해서..

[백준] 4949번 균형잡힌 세상

www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (true) { Stack stack = new Stack(); String s = sc.nextLine(); if(s.eq..

[프로그래머스] 2018 KAKAO BLIND RECRUITMENT 캐시

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(Least Recently Used) 를 사용하여 cache 실행시간 구하기 ..