분류 전체보기 94

[백준 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

팀1 제출 문제, 답

https://github.com/wooriFISA-team1/assignment01 GitHub - wooriFISA-team1/assignment01: 우리FISA 팀1 과제01 우리FISA 팀1 과제01. Contribute to wooriFISA-team1/assignment01 development by creating an account on GitHub. github.com assignment01 우리 FISA 팀1 제출 문제 목표 현실의 실제 사례를 예시로 객체지향에 대한 이해도를 높입니다. 클래스들간 상속 관계를 이해하고 업/다운캐스팅과 try-catch문을 활용합니다. 문제 Mercedes Benz(이하 Benz) 라는 차 브랜드가 있습니다. Benz에는 AMG라는 브랜드가 있습니다. ..

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) 아이디(..

프로젝트 날짜 필터 구현

Reminder 클래스의 LocalDate 멤버 reminderDate를 년/월 별로 모아 List를 반환하는 API 구현 public interface ReminderRepository extends JpaRepository { List findAllByReminderDateBetween(LocalDate start, LocalDate end); } JPA를 활용해 start 날짜와 end 날짜 범위에 해당하는 reminderDate 값을 갖는 Reminder 리스트를 반환하도록 Repository 내에 정의해놓았다. 서비스단의 findReminderByListByMonthAndYear 메서드 유저의 식별자와 찾고자 하는 리마인더의 년도와 월을 파라미터로 받는다. public List readRemin..