Java 35

[백준 2448] 별 찍기 - 11

2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static int n; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); n = Integer.parseInt(br.readL..

[Solved]/BOJ 2023.05.13

[백준 1074] Z

1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 배열 한 변의 길이는 2^N 한 변이 2^(N-1)인 사각형 4개로 나누어 왼쪽 위 - 오른쪽 위 - 왼쪽 아래 - 오른쪽 아래 순서 한 변의 길이가 2가 되었을 때 static int number 를 대입하면 됨 이후 board[r][c]의 값을 출력하면 된다 -> 메모리 초과 발생 board 전체를 recursion() 해서 그런 것으로 생각된다 r, c의 위치를 계속 추척해, 해당하는 영역만 recursion 할 필요가 있다 -> number++이..

[Solved]/BOJ 2023.05.12

[백준 1620] 나는야 포켓몬 마스터 이다솜

https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net N개의 줄에 1~N 번의 포켓몬들이 입력된다. 문제 M개가 주어진다. 포켓몬 이름이 주어지면 번호를 말하고, 번호가 주어지면 포켓몬을 말한다. N의 범위가 1~100,000 이기에 - 배열 사용시 숫자에 대응되는 포켓몬을 찾는것은 빠를 수 있어도 - 포켓몬이 위치한 인덱스를 찾는 것은 O(N)의 시간복잡도로 인해 비효율적이다. 이를 해결하기 위해 String 배열과 M..

[Solved]/BOJ 2023.04.29

[백준 11286] 절댓값 힙

https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 1. 연산의 개수 n을 입력받는다. 이후 n 만큼의 반복을 실행하는 for 반복문을 만든다. 2. 입력값에 따라 출력 후 값 삭제 or 값 list 에 추가 -> 를 실행한다. 2-1. 0을 입력 받았을 경우 : list 에서 절댓값이 가장 작은 값을 출력한다. 2-1-1. 절댓값이 가장 작은 값이 여러 개일 경우 : 가장 작은 수를 출력한다. - 이를 구현하기 위해 Prio..

[Solved]/BOJ 2023.04.28

[백준 1927] 최소 힙

https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net Java 의 PriorityQueue 는 기본적으로 최소 힙을 사용한다. PriorityQueue 의 메서드들을 사용할 줄 알면 쉽게 풀 수 있는 문제이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.PriorityQueue;..

[Solved]/BOJ 2023.04.28

[백준 1464] 뒤집기 3

https://www.acmicpc.net/problem/1464 1464번: 뒤집기 3 세준이는 어떤 문자열 S를 뒤집으려고 한다. 문자열을 뒤집는 방법은 문자열의 길이를 N이라고 하자. i만큼을 뒤집는다는 소리는 그 문자열의 처음부터 정확하게 i개의 문자를 역순으로 뒤집는 www.acmicpc.net 문자열을 입력받고 앞부터 .reverse() 가 가능하다. Brute Force 방식도 있지만 Greedy 방식 활용이 더 낫다. 1. 문자열 input 을 입력받고 앞부터 천천히 뒤집는다. 2. 뒤집을 때마다 check 메서드를 실행해 새로 생성한 문자열을 기존 제일 사전순 앞이던 문자열 answer 와 비교한다. 3. 비교해서 더 앞에 있으면 answer 를 업데이트하고, 더 뒤에 있으면 파기한다. ..

[Solved]/BOJ 2023.04.26

[백준 5430] AC

https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 골드 치고는 너무 쉬운 문제가 아닌가 싶었는데, 다음 문장이 눈에 들어왔다. [전체 테스트 케이스에 주어지는 p의 길이의 합과 n의 합은 70만을 넘지 않는다.] 정답률이 굉장히 낮다고 생각했는데, 분명 시간초과가 뜬 것이 분명했다. 알파벳 R과 D에 해당하는 연산을 수행해주는 것 이상으로 더 생각을 해 봐야 했다. - R을 할 때마다 뒤집는 것 -> 시간초과의 원인들 중 하나 - 따라서 R이 들어왔을 경우 뒤집는 대신 boolean 값 isRevers..

[Solved]/BOJ 2023.04.26

Graph

Graph는 Vertex(정점) 과 Edge(간선) 으로 이루어진 자료구조이다. 그래프 관련 용어 차수(Degree) : 정점에 연결된 간선의 수 인접(Adjacent) : 두 정점이 간선으로 연결되어 있는 상태 경로(Path) : 한 정점에서 다른 정점으로 이어지는 간선의 연속 사이클(Cycle) : 경로의 시작 정점과 끝 정점이 동일한 경우 가중치(Weight) : 간선에 할당된 가중치 값을 의미한다 최단 경로(Shortest Path) : 두 정점 사이의 가장 짧은 경로이다. 컴포넌트(Component): 그래프에서 연결된 정점들의 집합을 의미한다. 무향 그래프에서 컴포넌트는 연결 요소(Connected Component)라고도 한다. 이웃(Neighbor): 한 정점과 인접한 정점이다. 강결합(S..

Hash

해시 값과 해시 함수 해시 함수 Key를 input으로 주면 output으로 해시값을 도출하는 함수 input = Key output = Hash, Hash Value 해시 함수는 동일한 key에 대해 언제나 동일한 해시값 도출 그 결과인 해시값을 안다고 해도 input을 추측하기는 어렵다. 값이 다른 input이 주어져도 output이 동일 할 수 있다 → ‘해시 충돌 발생 가능’ 해시 테이블 Key-value구조로 데이터를 저장 output인 해시값을 테이블의 인덱스로 사용한다. Key(input) 의 결과 → [해시함수] → hash값(output) output을 인덱스로 갖는 배열 buckets value인 실제 값을 저장하는 entries buckets는 entries의 주소를 저장한다. 따라서..

년/월 필터 Validation, 회원가입시 자동 이름과 랜덤 ID 생성

년/월 필터 Validation https://eggmomo.tistory.com/76 프로젝트 날짜 필터 구현 Reminder 클래스의 LocalDate 멤버 reminderDate를 년/월 별로 모아 List를 반환하는 API 구현 public interface ReminderRepository extends JpaRepository { List findAllByReminderDateBetween(LocalDate start, LocalDate end); } JPA를 활용해 s eggmomo.tistory.com 저번 구현한 필터의 년/월 유효값 체크를 위한 부분을 다음과 같이 추가했다. 회원가입시 자동 이름과 랜덤 ID 생성 회원가입 단계를 이메일(중복체크)과 비밀번호 등록 (SignUp) 아이디(..