일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준#BOJ#2615#오목
- 백준#boj#12755
- 백준#BOJ#1939#중량제한
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#boj#16932#모양만들기
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#8012#한동이는영업사원
- Today
- Total
목록알고리즘,SQL/백준,BOJ (174)
순간을 성실히, 화려함보단 꾸준함을
https://www.acmicpc.net/problem/1301 1301번: 비즈 공예 첫째 줄에 다솜이가 가지고 있는 구슬의 종류 N이 주어진다. N은 3보다 크거나 같고, 5보다 작거나 같다. 둘째 줄부터 N개의 줄에 각각의 구슬이 총 몇 개 있는 지주어진다. 첫째 줄에는 1번 구슬, www.acmicpc.net 해설 : 사실 이런 문제를 보면 dp를 사용해야되는 건 알겠는데 점화식을 세우기가 바로 보이지는 않더라구요....그래서 항상 우리는 조건을 잘 보도록 합시다. N이 비정상적으로 범위가 작고 구슬의 총 개수도 35를 넘지는 않죠? 처음에는 브루트포스로 해도 되겠다 싶었는데 2^35은 감당이 안될 것 같아 패스했습니다. 점화식을 어떻게 세우면 좋을까요? 목걸이가 완성될 수 있는 조건을 확인하려..
https://www.acmicpc.net/problem/22236 22236번: 가희와 비행기 가희는 김포 공항에서 김해 공항까지 비행기를 타고 가려고 합니다. 비행기가 수평 방향으로 1만큼 이동하였을 때, 비행기의 고도는 1만큼 변화합니다. (상승 또는 하강) 비행기가 상승하거나 www.acmicpc.net 해설 : d 의 제한이 4000이 MAX이니 그냥 2차원 배열 넉넉하게 선언해주면 됩니다. 파스칼의 삼각형 문제 처럼 대각선에서 값들을 가져와 저장해 주면 됩니다. 이때, 조심할 점은 오버플로,,,,,,,,,조심합니다. 모듈러 연산을 해준다고 해도 덧셈 연산을 진행할때 int 형의 범위를 벗어나는 경우가 생길 수도 있습니다. #include using namespace std; using ll =..
https://www.acmicpc.net/problem/22234 22234번: 가희와 은행 가희는 창구가 하나인 은행을 운영하고 있습니다. 가희의 은행이 영업을 시작했을 때, 대기 줄에는 손님이 N명 있습니다. [그림 1] 카운터 직원과 N명의 손님 x번 손님에 대한 정보는 x번 손님의 www.acmicpc.net 해설 : 시뮬레이션 문제인데. 이런 문제는 큐를 사용하는 것보단 조건(Order) 와 같은 걸 추가해서 priority_queue로 해결하는 것이 훨씬 빠르고 유리하게 해결할 수 있는 것 같습니다. #include using namespace std; struct info { int p, t, c,order; bool operator cur.order; return c > cur.c; } ..
https://www.acmicpc.net/problem/22232 22232번: 가희와 파일 탐색기 첫 번째 줄에 jo_test 폴더에 있는 파일 개수 N과 가희가 설치한 OS에서 인식하는 파일 확장자의 개수 M이 공백으로 구분되어 주어집니다. 2번째 줄부터 N+1번째 줄까지 FILENAME.EXTENSION 형식의 문자열 www.acmicpc.net 해설 : 문제는 그냥 되게 간단한데 ㅋㅋㅋㅋㅋ 한가지 조건이라도 놓쳐버리면 고생할 문제네요. 연산자 오버로딩만 잘 어떻게 처리해주면 쉬운 문제입니다. 전 확장자가 둘다 붙거나, 둘다 붙지 않으면 3번째 조건으로 넘어가야 되는데 둘다 붙은 경우에만 생각해서 좀 해맸습니다. 연산자 오버로딩은 자유자재로 구현할 줄 알아야겠죵? #include using nam..
https://www.acmicpc.net/problem/22233 22233번: 가희와 키워드 1번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, floyd, os가 됩니다. 2번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, os가 됩니다. map은 1번째 글과 2번째 글에 중복으로 등장하였음을 www.acmicpc.net 해설 : 메모장에 적혀있는 단어가 나왔는지 안나왔는지 확인만 할 수 있으면 됩니다. 중복 처리를 해주기 위해 Set 자료구조를 선언해서 해결해 주면 되겠죠? 전 Set 2개를 선언해 주었는데 가만 생각해보니 그냥 Set 하나 선언해서 remove 해주면 될 것 같습니다. //package com.example.bojtemplate; /*JAVA IO Templat..
https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 해설 : 전형적인 브루트포스 문제입니다. 모든 가능한 경우의 수를 해보면 되죠. 주어진 문자열을 문자 하나씩 중복되지 않게 순차적으로 0번부터 X번이라고 가정하고 permutation을 돌려주면 됩니다. 전 중복처리를 map 자료구조를 이용해서 해주었습니다. /*JAVA IO Template Reference : 류호석*/ import javax.xml.crypto.dsig.XMLSignat..
https://www.acmicpc.net/problem/24039 24039번: 2021은 무엇이 특별할까? 백준 온라인 저지의 송년대회 Good Bye BOJ, 2021!의 개최일은 2021년 12월 31일이다. 원이는 대회가 개최된다는 사실이 기뻐 제목을 뚫어져라 보다가 2021이 무언가 특별하다는 사실을 깨달았다. 그렇 www.acmicpc.net 해설 : 단순 소수들만 뽑아주면 됩니다. sqrt(n)을 사용해서 소수 판정을 해주던가 뭐 에라토스체네스의 체를 사용해서 걸러주던가 하면 됩니다. 제한 범위가 10000밖에 안되니 절대 시간초과가 날 일은 없겠죠. #include using namespace std; using ll = long long; bool prime[10010]; void so..
https://www.acmicpc.net/problem/23563 23563번: 벽 타기 출발하자마자 오른쪽으로 한 칸 이동하고, 위로 한 칸 벽을 타고 이동하면 총 1의 시간이 소요된다. www.acmicpc.net 해설 : 루시우가 한칸 움직일때마다 1초씩 시간이 늘지만 벽을 타면 0초라는 걸 보고 일반적인 BFS 문제로는 풀기 힘들지 않을까? 라는 의문점을 가져야 합니다. 결국 이건 쉽게 생각해보면 간선의 가중치가 일정하지 않는 그래프에서 최단거리를 구하는 문제이니 그냥 다익스트라 문제입니다. 문제에서 나와있는 조건대로 코드를 작성해주면 됩니다. 벽을 타고 지나가는 부분만 조심히 잘 처리해주면 되겠군요. #include using namespace std; using ll = long long; ..
https://www.acmicpc.net/problem/14628 14628번: 입 챌린저 입력은 항상 적의 체력을 정확히 0으로 만들 수 있는 스킬의 조합만 들어온다. 첫째 줄에 스킬의 개수 N, 적의 체력 M, 같은 스킬을 사용할 때마다 추가되는 마나 포인트 K가 주어진다. (1≤N,M,K≤10 www.acmicpc.net 해설 : 문제를 이해하는건 어렵지 않습니다. 다만 점화식을 세우는 것이 너무나도 까다롭더라구요.... 여러개의 스킬을 조합해야 하고, 스킬을 사용할 수 있는 제한이 존재하지 않는 것을 통해 unbounded knapsack 문제라고 판단이 들었고 그렇게 점화식을 세웠습니다. 다만 평소에 풀어본 unbounded knapsack 문제는 1차원 배열로 해결하였는데, 1차원으로는 세워..
https://www.acmicpc.net/problem/23562 23562번: ㄷ 만들기 2021년, 냅다 ㄷ 만들기는 한국인의 기본 소양이 되었다. 우리는 앞에 놓여있는 $n \times m$ 모눈종이에 냅다 ㄷ을 그리려 한다. ㄷ 모양은 $k \times k$ 정사각형 7개를 붙인 형태로 정의한다. 다음은 www.acmicpc.net 해설 : 단순 구현문제입니다. 그냥 모오오오오오오오오오든 경우의 수를 전부 해보면 됩니다. 크기가 1인 정사각형부터 시작해서 board 보다 크기가 커질때까지 count 해줍시다. 먼저 #의 개수를 전부 세줍시다.=>black 현재 (x,y) 에서 시작해서 ㄷ 모양을 탐색해 주면서 . 이면 #으로 바꾸어 줘야하니 count 해주고, 답을 갱신할때는 (a*count) ..
오늘 새롭게 알게 된 사실.....자바에서 입출력 할때 입력할때는 Scanner를 사용하지 말아야 된다는 건 알고 있었지만, sysout 또한 사용하면 안된다는 사실을 알 수 있었네요...ㅠㅠㅠ 1)sysout package com.boj.practice; /** * IO Template reference : 류호석 */ import java.io.*; import java.nio.Buffer; import java.util.*; import java.util.concurrent.DelayQueue; import static java.lang.Math.*; public class Main{ static FastReader scan = new FastReader(); public static void ma..
요즘 lambda 와 stream을 사용하는 것에 조금 집중하려고 하는데 이게 자바에서 함수형 프로그래밍을 쓰는게 되게 어렵네요....ㅠ 먼저 Arrays.sort()를 이용해서 정렬한 후에 stream()을 사용해서 출력까지 해보겠습니다. public static void solve() { int []arr = new int[4]; //Integer []arr = new Integer[4]; for(int i=0;iy-x); Arrays.stream(arr).forEach(x-> System.out.print(x)); }딱히 어려운건 없습니다. 오름차순은 이런식으로 하면 됩니다. 그러나 문제는 내림차순을 하는 것인데, Comparator을 사용해서 내림차순을 할 수 있지만 전 lambda를 사용해서 내..