전체 글
-
[BOJ] 나는야 포켓몬 마스터 이다솜Algorithm/BOJ 2020. 5. 27. 16:59
[1620] 나는야 포켓몬 마스터 이다솜 https://www.acmicpc.net/problem/1620 포켓몬 도감에서 포켓몬의 이름을 보면 포켓몬의 번호를 말하거나, 포켓몬의 번호를 말하면 포켓몬 이름을 말하는 는 프로그램 Solution HashSet 두 개를 만들어 문자가 입력되면 숫자 출력, 숫자가 입력되면 문자가 출력되도록 구현 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu..
-
[BOJ] 회사에 있는 사람Algorithm/BOJ 2020. 5. 27. 15:36
[7785] 회사에 있는 사람 https://www.acmicpc.net/problem/7785 어떤 사람이 회사에 들어왔는지, 나갔는지 기록된 로그가 주어졌을 때, 현재 회사에 있는 모든 사람을 구하는 프로그램 Solution Set 자료구조에서 로그 기록이 "enter"일 경우 put, 아닐경우에 remove() 연산 모든 기록대로 연산을 끝낸 후에 배열에 넣고 오름차순 정렬한 다음 역순 출력 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 import java.io.BufferedReader; import java.io.IOExcepti..
-
[BOJ] 패션왕 신해빈Algorithm/BOJ 2020. 5. 27. 14:51
[9575] 패션왕 신해빈 https://www.acmicpc.net/problem/9375 해빈이가 가진 옷들로 만들 수 있는 모든 조합의 수 구하기 Solution 해빈이가 가진 의상의 이름과 종류가 공백으로 주어지면 의상의 종류와 count를 HashMap에 저장한다. answer = (의상종류1 + 안 입는 경우) * (의상종류2 + 안 입는 경우) * (...) * (의상종류n + 안 입는 경우) - 다 안 입는 경우 answer *= ( map.get(key) +1 ); answer -= 1; 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ..
-
[BOJ] 연구소3Algorithm/BOJ 2020. 4. 28. 21:07
[17142] 연구소3 https://www.acmicpc.net/problem/17142 연구소2의 응용 문제 처음에 모든 바이러스는 비활성 상태이고, 활성 상태인 바이러스는 상하좌우로 인접한 모든 빈 칸으로 동시 복제되며, 1초가 걸린다. 승원이는 연구소의 바이러스 M개를 활성 상태로 변경하려고 한다. 활성 바이러스가 비활성 바이러스가 있는 칸으로 가면 비활성 바이러스가 활성으로 변한다. Solution 바이러스 자체에 좌표와 더불어 시간을 저장할 수 있는 step 멤버변수를 설정해서 풀 수 있었다. 입력에서 빈칸은 -1, 바이러스 칸은 -2로 저장 permutation으로 m개의 바이러스를 선택해서 모든 경우에 대해 BFS 함수를 돌렸다. map[nx][ny]의 빈칸 or 비활 바이러스 여부에 따라..
-
[SWEA] 입국심사Algorithm/SWEA 2020. 4. 25. 01:40
[3074] 입국심사 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV_XEokaAEcDFAX7 Solution 이분 탐색으로 푸는 문제였다. (몰랐다) 전체 입국심사에 걸리는 최악의 시간 = (가장 오래걸리는 입국심사대 시간) * (대기자 수) 따라서 [0 ~ 최악의 시간]을 최초 범위로 잡고 이분 탐색으로 범위를 좁혀가며 최소 시간을 구한다. 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52..
-
이분 탐색 (Binary Search)Algorithm/이론 2020. 4. 24. 16:14
이분 탐색 (Binary Search) 이분 탐색 알고리즘의 큰 골자를 이루는 로직은 1. 오름차순으로 정렬 되어 있는 자료 구조에서 특정값을 찾을 때, 2. 탐색 범위를 절반씩 나눠가면서 해당 값을 찾아가는 것이다. https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. www.acmicpc.net 위 문제를 이분 탐색으로 풀어보았다. 배열의 중..
-
[Programmers] 베스트앨범Algorithm/Programmers 2020. 4. 24. 01:54
[Level 3] 베스트앨범 https://programmers.co.kr/learn/courses/30/lessons/42579 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려한다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같다. 1. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 2. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 genres[]와 노래별 재생 횟수를 나타내는 plays[]가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하시오. Solu..
-
[Programmers] 종이접기Algorithm/Programmers 2020. 4. 23. 17:51
[Level 3] 종이접기 https://programmers.co.kr/learn/courses/30/lessons/62049 종이를 n번 접은 후 모두 펼쳤을 때 생기는 접힌 부분의 모양을 배열에 담아 return 하도록 solution 함수를 완성하시오 Solution 첫번째 생각했던 방법은 리스트 중간 중간 값을 추가하는 방법 = 시간초과 가운데 접힌 모양을 기준으로 대칭인 점을 고려하여 풀었다. 푸는데 시간이 너무 오래 걸림 .. ㅠ ㅠ 소스코드 123456789101112131415161718192021222324252627282930313233343536import java.io.IOException;import java.util.LinkedList; public class Solution ..