분류 전체보기
-
BOJ) 단어 수학알고리즘/백준 2020. 7. 18. 22:23
단어 수학 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 풀이 N개의 단어를 각각 숫자로 바꿔서 모두 더한 값 중 최대값이 되는 경우를 출력한다. 이 때, 단어에 포함되는 알파벳의 갯수는 10개 이하이며, 0~9 사이의 값을 적절하게 배치했을 때의 최대값을 구하는 문제다. 처음에는 각 알파벳이 가질 수 있는 값의 모든 경우의 수를 DFS를 통해 저장했다. 입력 받을 때, HashMap에 각 char의 index를 저장하는 식으로 문제를 풀었는데, 메모리와 시간이 매우 비효율적이었다. 생각 덜하고 빠르게..
-
BOJ) 체스판 다시 칠하기알고리즘/백준 2020. 7. 18. 22:13
체스판 다시 칠하기 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 풀이 흰색과 검은색이 랜덤하게 칠해진 n x m 크기의 보드가 주어지는데, 이 보드를 8x8로 잘라서 체스판으로 이용하는 경우 최소 책칠작업의 횟수를 구하는 문제다. 체스판은 흰색으로 시작하는 경우, 검은색으로 시작하는 경우 두 경우밖에 없기 때문에, 두 보드를 먼저 final로 선언했다. for문을 돌면서 8x8로 보드판을 자르면서 검사했다. 보드의 시작점은 0~n-8 , 0 ~m-8 이 된다. (n = 보드의 y축 최대 값, m =..
-
BOJ) 나이트의 이동알고리즘/백준 2020. 7. 18. 22:06
나이트의 이동 7562번: 나이트의 이동 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 www.acmicpc.net 풀이 테스트 케이스의 수가 주어지고, 각 테스트 케이스마다 체스판의 크기, 시작점, 목표 지점이 차례대로 주어진다. 나이트가 시작점을 출발해서 목표 지점에 도달하는 경우의 수를 출력하는 문제다. 나이트가 이동할 수 있는 경우의 수는 8가지다.위의 8가지 경우의 x와 y가 움직이는 위치를 각각 dx와 dy로 선언해줬다.그리고 BFS를 통해서 이미 도착했던 지점인지 visit체크와 함께 움직일 때마다 step을 저장해주면서, 도착지점에 도달하면 ste..
-
BOJ) 대회 or 인턴알고리즘/백준 2020. 7. 18. 22:01
대회 or 인턴 2875번: 대회 or 인턴 문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.) 백준대학교는 뛰어난 인재들이 많아 www.acmicpc.net 풀이 1. 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙 2. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다. 위의 두 조건에 따라, 여학생과 남학생, 인턴에 참여하는 학생의 수가 순서대로 주어질 때, 인턴쉽에 참가할 수 있는 최대 팀의 수를 구하는 문제다. 여학생 2명과 남학생 한명을 짝지어야 하기 때문에, 반복문을 통해 인턴십에 참여..
-
BOJ) 동전 1알고리즘/백준 2020. 7. 18. 21:56
동전 1 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 n 가지 종류의 동전을 각각 여러개 이용해서 k원이 되게 하는 수를 구하는 문제다. 처음에는 dfs로 접근했다가, 동전은 몇개라도 사용할 수 있다는 조건을 보고 DP로 선회했다. 각각 동전에 대해서 K원 이하일 때, 쓰일 수 있는 모든 돈에 경우의 수를 추가시켜주었다. for문을 돌면서 각 동전 coin에 대해coin의 가치부터 K원 까지 들어갈 수 있는 경우만 추가시켜주면 해결되는 문제였다. 코드 import java.io.BufferedReade..
-
BOJ) 암호 만들기알고리즘/백준 2020. 7. 18. 21:47
암호 만들기 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 풀이 C 개의 문자 중 L개를 선택해서 만들 수 있는 암호를 출력하는 문제다. 이 때, 암호는 모음(a,e,i,o,u)이 최소 하나 이상 자음이 두개 이상인 조합만 가능하다. 또한, 모든 암호의 경우를 사전순서대로 출력해야한다. 위의 두 조건을 충족하기 위해 C개 중 L개를 선택하는 것은 DFS를, 사전 순서대로 하기 위해 정렬을 선택했다. DFS이후에 정렬을 하기에는 너무 많은 시간과 메모리를 낭비할 것 같아서 입력 받자마자 정렬을 해주었다. DFS에서..
-
BOJ) 신입 사원알고리즘/백준 2020. 7. 18. 21:38
신입 사원 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성�� www.acmicpc.net 풀이 처음에는 완전탐색으로 풀려고 시도했다. 하지만, 모든 배열을 n번씩 돌다보니까 시간초과가 떴다. 그래서 정렬을 이용해야 겠다고 생각했다. 정렬의 기준을 잡는데 고민을 많이 했는데, 서류와 면접 둘 다 포함시켜 정렬하기엔 너무 복잡해서 하나를 기준으로 정렬을 해야겠다고 생각했다. 그래서, 서류 심사를 기준으로 오름차순 정렬을 해줬다. 서류 심사에서 1등을 받은 사람의 면접 등수를 첫 기준으로 삼고, 서류 2등부터 쭉 돌면서..
-
10장) 24시간 365일 중단 없는 서비스를 만들자Java & Spring/스프링 부트와 AWS로 혼자 구현하는 웹 서비스 2020. 7. 18. 15:40
9장까지 진행한 경우, 긴 시간은 아니지만, 새로운 Jar가 실행되기 전까진 기존 Jar를 종료시켜 놓기 때문에 서비스가 중단됨 무중단 배포 소개 무중단 배포 방식 AWS에서 블루 그린(Blue-Green) 무중단 배포 도커를 이용한 웹서비스 무중단 배포 L4 스위치 ~> 고가의 장비라 큰 기업 말고는 잘 안씀 엔진엑스 웹 서버, 리버스 프록시, 캐싱, 로드 밸런싱, 미디어 스트리밍 등을 위한 오픈소스 SW 대부분의 서비스에서 이용 리버스 프록시 => NginX가 외부의 요청을 받아 백앤드 서버로 요청을 전달 엔진엑스(NginX) 클라우드 인프라가 구축되어 있지 않아도 사용할 수 있다. 하나의 EC2 혹은 리눅스 서버에 NginX 1대와 스프링 부트 Jar 2대를 이용 NginX는 80(http), 44..