분류 전체보기

    [백준] 1976번 여행 가자 풀어보기 [Java]

    [백준] 1976번 여행 가자 풀어보기 [Java]

    알고리즘 문제를 푸는 언어를 자바로 바꾸고, 유니온 파인드 문제를 처음 풀어본다. 그래서 처음에는 bfs로 푸는 건가 하다가, 유니온 파인드 가 생각나서 풀 수 있었다. 👨‍🏫 풀이 다음 도시로 여행을 하려면, 다음 도시와 어떤 경로든 이어져 있어야 한다. 서로가 이어져 있는지 여부를 체크할 때는 유니온 파인드를 쓰면 된다. find로 서로가 같은 parent를 공유하고 있는지 여부를 찾고, 만약 같은 parent를 공유하고 있다면, 갈 수 있는 경로가 있다는 것으로 간주할 수 있다. 각 도시를 연결할 때는 값이 작은 것을 parent로 만든다라는 것을 따르면 된다! (큰 것으로 기준을 두어도 됨 일관성있게만 기준을 만들기) 만약 두 노드의 부모가 다르면, 갈 수 없는 루트인 것이다. 👨🏻‍💻 코드 pa..

    연관 관계 편의 메소드❓

    연관 관계 편의 메서드라는 말을 공부할 때, 들었고, 김영한님이 이거 실수 하는 사람들 많다고 말씀하셔서, 나는 안 그러겠지라고 했는데, 그랬다,,,이제 실수를 하지 않기 위해서 정리를 하자,,,!!! 연관 관계 편의 메서드를 알아보기 전 연관 관계부터 알아보자!! 연관 관계란❓ 내가 사용하는 JPA는 관계형 DB(MySQL, Oracle, etc)에 대해서 지원을 한다. 관계형 데이터베이스는 키(key)와 값(value)들의 간단한 관계를 테이블화 시킨 매우 간단한 전산정보 데이터베이스이다. ORM은 Object Relation Mapping 즉, 객체와 관계형 데이터 베이스간의 매핑이라고 말할 수 있다. 위에 관계형 데이터베이스 설명처럼 각 테이블에 관계가 있다. 테이블에서는 왜리키를 통해서 관계를 ..

    [백준] 17780번 새로운 게임 풀어보기[Java]

    [백준] 17780번 새로운 게임 풀어보기[Java]

    시뮬레이션은 시간이 오래걸린다,,, 이 문제도 한시간 반 풀었다,,, 중간에 실수도 했다,,,!! 실수를 하면, 찍어서 보는 것도 좋지만, 내 논리가 어디가 틀렸는지 한번 둘러보는 것도 좋을 거 같다,,!! 👨‍🏫 풀이 색들을 저장할 수 있는 map을 만들었고, chess들의 위치를 저장하는 chessHorse를 만들었다. chessHorse는 LinkedList 2차원 배열로 만들어서, 같은 위치에 있는 것들은 linkedList로 연결해줘서 쌓인 것 처럼 보이게 했다,,,!! 움직일 수 있는 말들, 즉 혼자이거나 맨 아래에 위치한 말들을 PriorityQueue에 넣어줬다. 말들은 순서대로 움직이기 때문에, 순서가 작은 순으로 우선순위를 설정해줬다! 다음 위치가 파란색인 경우, 나간 경우 움직이지 않..

    [백준] 13460번 구슬 탈출 2 풀어보기 [Java]

    [백준] 13460번 구슬 탈출 2 풀어보기 [Java]

    시뮬레이션 + bfs 문제였다. 역시나 시뮬레이션은 어렵고 시간이 오래걸렸다. 그것도 gold1이니까 더 오래걸렸다,,,, 실수를 하면 더 오래걸린다는거,,, 실패하면, 질문 검색 들어가서 반례 찾아보는 습관이 있는데, 스스로 찾아보는 습관을 들여야겠다,,, 👨‍🏫 풀이 우선 두 구슬이 같이 움직인다. 그래서 동일한 곳에 도달할 수 없다. 하나씩 움직여준다음, 동일한 곳에 위치해 있으면, 한 구슬을 옮겨줘야 한다!! 1. 빨간 구슬을 벽을 만나거나 구멍을 만날 때까지 움직이기. 2. 파란 구슬을 벽을 만나거나 구멍을 만날 때까지 움직이기. 3. 파란 구슬이 구멍을 통과했다면, 이 case는 넘어간다. 4. 만약 빨간 구슬만 구멍을 통과했다면, 정답!! bfs이기 때문에 그냥 return 해주면 된다. 5..

    [백준] 2629번 양팔저울 풀어보기 [Java]

    [백준] 2629번 양팔저울 풀어보기 [Java]

    관계식이 있는 dp문제였다. 관계식만 잘 구하면 잘풀수 있어 골드3까지는 아닌거 같다!!(내가 뭐라고 평가하나,,,,ㅋㅋㅋ) 👨‍🏫 풀이 나는 세가지 경우를 나눠서 풀었다. 1. 지금 추를 더하는 경우 2. 지금 추를 더하지 않고 넘어가는 경우 3. 지금의 무게가 추보다 작다면, 추에서 현재 무게를 빼고, 크다면, 현재 무게에서 추를 뺀다. Base case 1. weight 음수가 되면 안되고(원래 0이 될일도 없기 때문에 0을 포함해줘야 됐지만, 나는 첫 시작 무게를 0으로 설정을 해줘서 0을 포함해주지 않았다.) 40000보다 크면 안된다. 2. 주어진 추는 한번만 사용가능하기 때문에 주어진 추를 다 방문했는지 체크 👨🏻‍💻 코드 package 번2629; import java.io.Buffered..