java

브릿지 패턴이란❓
구조 패턴이란❓ 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴. 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나, 객체들을 서로 묶어 새로운 기능을 제공하는 패턴 구조 패턴 특징✌️ 서로 독립적으로 개발한 클래스 라이브러리를 마치 하나인 것처럼 사용할 수 있다. 여러 인터페이스를 “합성”하여 서로 다른 인터페이스들의 통일된 추상을 제공한다. 인터페이스나 구현을 복합하는 것이 아니라 객체를 "합성”하는 방법을 재공한다. 브릿지 패턴이란❓ 추상적인 것과 구체적인 것을 분리하여 연결하는 패턴이다. 여기서 연결이라는 표현이 브릿지를 의미한다. 추상적인 것과 구체적인 것을 구분짓는 것에 집중을 해야된다. client : abstraction을 사용하는 코드 abstrac..
![[백준] 1976번 여행 가자 풀어보기 [Java]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdV3cHJ%2FbtrxdPMCTIP%2F3sr1i6EdS2aOlQSWOrOqHk%2Fimg.png)
[백준] 1976번 여행 가자 풀어보기 [Java]
알고리즘 문제를 푸는 언어를 자바로 바꾸고, 유니온 파인드 문제를 처음 풀어본다. 그래서 처음에는 bfs로 푸는 건가 하다가, 유니온 파인드 가 생각나서 풀 수 있었다. 👨🏫 풀이 다음 도시로 여행을 하려면, 다음 도시와 어떤 경로든 이어져 있어야 한다. 서로가 이어져 있는지 여부를 체크할 때는 유니온 파인드를 쓰면 된다. find로 서로가 같은 parent를 공유하고 있는지 여부를 찾고, 만약 같은 parent를 공유하고 있다면, 갈 수 있는 경로가 있다는 것으로 간주할 수 있다. 각 도시를 연결할 때는 값이 작은 것을 parent로 만든다라는 것을 따르면 된다! (큰 것으로 기준을 두어도 됨 일관성있게만 기준을 만들기) 만약 두 노드의 부모가 다르면, 갈 수 없는 루트인 것이다. 👨🏻💻 코드 pa..
![[백준] 17780번 새로운 게임 풀어보기[Java]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcizEtx%2Fbtrw5QZifZR%2FpiqXtpXEutElTVLnoLCc11%2Fimg.png)
[백준] 17780번 새로운 게임 풀어보기[Java]
시뮬레이션은 시간이 오래걸린다,,, 이 문제도 한시간 반 풀었다,,, 중간에 실수도 했다,,,!! 실수를 하면, 찍어서 보는 것도 좋지만, 내 논리가 어디가 틀렸는지 한번 둘러보는 것도 좋을 거 같다,,!! 👨🏫 풀이 색들을 저장할 수 있는 map을 만들었고, chess들의 위치를 저장하는 chessHorse를 만들었다. chessHorse는 LinkedList 2차원 배열로 만들어서, 같은 위치에 있는 것들은 linkedList로 연결해줘서 쌓인 것 처럼 보이게 했다,,,!! 움직일 수 있는 말들, 즉 혼자이거나 맨 아래에 위치한 말들을 PriorityQueue에 넣어줬다. 말들은 순서대로 움직이기 때문에, 순서가 작은 순으로 우선순위를 설정해줬다! 다음 위치가 파란색인 경우, 나간 경우 움직이지 않..
![[백준] 13460번 구슬 탈출 2 풀어보기 [Java]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeAsste%2FbtrwWgReLIc%2FwA2RrP8JiBNar6oJEsKDi0%2Fimg.png)
[백준] 13460번 구슬 탈출 2 풀어보기 [Java]
시뮬레이션 + bfs 문제였다. 역시나 시뮬레이션은 어렵고 시간이 오래걸렸다. 그것도 gold1이니까 더 오래걸렸다,,,, 실수를 하면 더 오래걸린다는거,,, 실패하면, 질문 검색 들어가서 반례 찾아보는 습관이 있는데, 스스로 찾아보는 습관을 들여야겠다,,, 👨🏫 풀이 우선 두 구슬이 같이 움직인다. 그래서 동일한 곳에 도달할 수 없다. 하나씩 움직여준다음, 동일한 곳에 위치해 있으면, 한 구슬을 옮겨줘야 한다!! 1. 빨간 구슬을 벽을 만나거나 구멍을 만날 때까지 움직이기. 2. 파란 구슬을 벽을 만나거나 구멍을 만날 때까지 움직이기. 3. 파란 구슬이 구멍을 통과했다면, 이 case는 넘어간다. 4. 만약 빨간 구슬만 구멍을 통과했다면, 정답!! bfs이기 때문에 그냥 return 해주면 된다. 5..
![[백준] 2629번 양팔저울 풀어보기 [Java]](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEJB9a%2FbtrwmZwkdWw%2FfpKECsNbOAnKVupoRdrGj1%2Fimg.png)
[백준] 2629번 양팔저울 풀어보기 [Java]
관계식이 있는 dp문제였다. 관계식만 잘 구하면 잘풀수 있어 골드3까지는 아닌거 같다!!(내가 뭐라고 평가하나,,,,ㅋㅋㅋ) 👨🏫 풀이 나는 세가지 경우를 나눠서 풀었다. 1. 지금 추를 더하는 경우 2. 지금 추를 더하지 않고 넘어가는 경우 3. 지금의 무게가 추보다 작다면, 추에서 현재 무게를 빼고, 크다면, 현재 무게에서 추를 뺀다. Base case 1. weight 음수가 되면 안되고(원래 0이 될일도 없기 때문에 0을 포함해줘야 됐지만, 나는 첫 시작 무게를 0으로 설정을 해줘서 0을 포함해주지 않았다.) 40000보다 크면 안된다. 2. 주어진 추는 한번만 사용가능하기 때문에 주어진 추를 다 방문했는지 체크 👨🏻💻 코드 package 번2629; import java.io.Buffered..