차곡차곡 성 쌓기
article thumbnail
[S2] 유기농 배추 : 1012 - BFS
알고리즘/백준 2023. 11. 17. 00:05

1. 💎 문제 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 2. 🖥️ 코드 import java.util.*; import java.io.*; class Main { static boolean isBaecu [][]; public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter..

article thumbnail
[D2] 파리퇴치 - 구간 합
알고리즘/백준 2023. 11. 13. 01:44

1. 💎 문제 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 2. 🤔어떻게 풀까? 이거는 다 더해봐야 풀 수 있겠다고 생각하다가 어떻게 하면 로직을 줄일 수 있을까 고민했다. 결국 구간합을 이용하기로 했다! 구간합을 이용하여 O(n)으로 문제를 풀 수 있다. 만약 구간합을 미리 구하지 않는다면 모든 순서마다 요소들을 구해 더해줘야 하므로 O(M*N)으로 오랜 시간이 걸린다. 3. 💡 풀이 로직 1. 숫자 입력 받기 & 구간 합 구하기 현재 요소의 구간 합은 `sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1] + nums[i][j]`로 구한다. String [] data = br.rea..

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
[알고리즘] Lower bound와 Upper bound 개념과 구현 - Java
CS/알고리즘 2023. 11. 10. 18:32

1. 서론 이분 탐색 알고리즘 관련 문제를 풀다가 잘 이해가 안되는 부분이 2가지 있었는데 바로 원하는 값과 탐색 값이 같을 때 어디서 처리를 해야할지, 두 번째로 low와 high값 중 어떤 것을 결과로 선택 해야할지이다. 여러 블로그들을 방문하여 내가 고민했던 문제를 어떻게 생각했는지 알아봤는데 설명이 잘 되어있는 블로그에서는 대부분 Lower bound와 Upeer bound 중 하나를 선택해서 구현했다. 그래서 이 두 개념에 대해 알아보고자 한다! 2. Lower bound Lower bound 알고리즘 찾고자 하는 값(크거나 같은)의 시작위치를 알아낸다. 시간 복잡도 : O(logn) 2.1 동작 방식 1. 배열의 중간 값을 가져온다. 2. 중간 값과 검색값을 비교한다. 중간 값이 검색 값보다 ..