차곡차곡 성 쌓기
article thumbnail
[D2] 달팽이 게임
알고리즘/백준 2023. 11. 12. 22:02

1. 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2. 어뗗게 풀까 보기에는 쉬워보여서 무작정 4방향에 대해 for문을 쓰면 되지 않을까? 하고 구현을 했지만,, 점점 예상치 못한 곳이 늘어나고, 코드가 바뀌고, 결국 방향성을 잃어서 포기했다가 다시 도전했다. 어려웠던 점은 방향을 언제 바꿔줄지랑 방향을 바꿔주기 위해 체크하는 과정에서 실제 x,y 값을 바꿔주면 안되기에 비교를 어떻게 할까 애먹었다. 또한 2차원 배열을 사용했는데 `array[x][y]` 처럼 x값을 행으로 바라본 바람에 머릿속의 구조랑 전혀 달라져 x,y 위치를 바꿔 다시 구현했다. 이 문제의 핵심은 방향을 언제 바꿔줄지를 잘 선택하..

article thumbnail
[G5] 색종이와 가위 : 20444 : JAVA - 이분 탐색
알고리즘/백준 2023. 11. 11. 01:39

1. 💎 문제 20444번: 색종이와 가위 첫 줄에 정수 n, k가 주어진다. (1 ≤ n ≤ 231-1, 1 ≤ k ≤ 263-1) www.acmicpc.net 2. 🤔 어떻게 풀까 악 이분 탐색 너무 어렵다!!!! 기준을 못 찾겠어.. 될 때까지 계속 푼다!!!!!😡😡 그래도 이 문제는 기준을 찾았다. 휴  우선 주어진 내용 중 관계를 파악했다. 가위질의 횟수가 많아지면 조각이 증가하고, 가위질의 횟수가 작아지면 조각이 감소할테니, 이를 이용해 계산 값이 주어진 k개의 조각과 딱 맞을 때 가위질의 횟수를 알아낸다. 그러기 위해선 가위질에 따른 잘라지는 색종이의 개수를 찾아야한다. 잘 모르겠다가 몇 번 그려보니 `(가로로 자른 수 +1)*(세로로 자른 수 +1)`이 잘라진 조각의 개수인 것을 알았다...

article thumbnail
[백준] IF문 좀 대신 써줘 : 19637 : JAVA - 이분탐색 (S3)
알고리즘/백준 2023. 11. 10. 15:33

1. 💎 문제 19637번: IF문 좀 대신 써줘 첫 번째 줄에는 칭호의 개수 N (1 ≤ N ≤ 105)과 칭호를 출력해야 하는 캐릭터들의 개수 M (1 ≤ M ≤ 105)이 빈칸을 사이에 두고 주어진다. (1 ≤ N, M ≤ 105) 두 번째 줄부터 N개의 줄에 각 칭 www.acmicpc.net 2. 🤔 어떻게 풀까 이 문제는 M개의 전투력에 대해 칭호를 매개주면 되는 문제이다. 하지만 문제는 칭호의 개수와 M의 수가 10^5이라는 것이다. 시간 복잡도가 O(n^2)이하로 풀어야한다. 칭호의 상한선이 오름차순으로 주어지기 때문에 정렬된 상태로 이진 탐색을 쓰기 좋은 상태이므로 빠르게 진행하기 위해 이진 탐색을 이용한다. 이분 탐색 시간 복잡도 : O(log2N) 범위를 반으로 나누며 탐색 범위를 줄..

article thumbnail
[D2] 파스칼의 삼각형
알고리즘/백준 2023. 11. 9. 15:36

1. 💎 문제 2. 🤔 어떻게 풀까? 그림을 그려보니 가장자리는 무조건 1이고, 중간에 있는 요소들은 위에 있는 요소들을 순서대로 더하면 되는거였다. 그래서 처음에 ArrayList 배열로 구현할까 했지만, 이차원 배열로 구현하는게 더 좋은 방법같았다. 루프를 돌면서 차례대로 값을 채우기 위해서는 비어있는 값은 0으로 처리해야 했는데 ArrayList를 사용하면 0를 넣어주기도 애매하고 훨씬 어려워질 것 같아서, 애초에 처음부터 0으로 초기화되는 이차원 배열을 사용하기로 했다. 이렇게 0번째 요소에는 0를 담아 따로 에외처리를 하지 않도록 하였고, 순서대로 더 해주자고 생각했다. `A[i+1] = A-1[i] + A-1[i+1]`를 적용하도록 생각 후 구현을 시작했다. 3. 💡 로직 1. 솔루션 파스칼 ..

article thumbnail
[G5] 숨바꼭질 3 : 13549 : Java - BFS
알고리즘/백준 2023. 11. 6. 01:05

1. 💎 문제 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 2. 🤔어떻게 풀까 처음 봤을 때는 누적하면 풀어야될 것 같아서 DP로 풀어야하나 생각했다. 하지만 보다보니깐 큐를 이용해서 정보를 넣어서 관리해주면 될 것 같았다. 현재 위치에서 이동할 수 있는 경우의 수는 -1, +1, *2로 3가지이다. 그러므로 이 3가지 위치에 대해만 생각하면 되며, 현재 노드를 거쳐서 다음 위치를 갈 때 비용이 적은 경우 => 비용 갱신 및 큐에 추가 하기로 했다. 이 과정을 큐가 빌 ..