Algorithm 17

DFS와 BFS

Intro dfs와 bfs는 트리의 순회처럼 그래프의 모든 정점을 특정 순서에 따라 방문하는 그래프의 탐색 알고리즘이다. Graph 계층적인 구조보다 좀더 일반적이고 강력한 자료 구조 - 현실 세계의 사물이나 추상적인 개념 간의 연결 관계를 표현한다. e.g. 여러 도시를 연결하는 도로망, 사람들 간 지인 관계, 웹사이트 간 링크 적용할 수 있는 문제 - 철도망의 안정성 분석 - 소셜 네트워크 분석 - 인터넷 전송 속도 계산 - 한 붓 그리기 - 외환 거래 암시적 그래프 구조 - 할 일 목록 정리 - 15-퍼즐 - 게임판 덮기 - 회의실 배정 Tree와의 차이점 Graph는 부모 자식 관계에 대한 제약이 없다. 그래프 G(V, E) : 어떤 자료나 개념을 표현하는 vertex들의 집합 V와 이들을 연결하..

Algorithm 2023.10.09

[프로그래머스] 방금 그 곡 Java

입력 파싱, m을 musicinfo의 melody에서 찾기 -> 이렇게 하면 불필요하게 한 번 더 돌아야 한다. musicinfo의 melody를 m에서 찾기. import java.util.Arrays; class Solution { public static String solution(String m, String[] musicinfos) { String answer = ""; // 0. 파싱하기 // musicinfos를 시작 시간, 끝나는 시간 / 노래 제목 / 멜로디 int len = musicinfos.length; int[] time = new int[len]; String[] title = new String[len]; String[] melody = new String[len]; for(..

Algorithm 2023.08.01

[프로그래머스] 캐시

https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > [1차] 캐시 후기 네 시간 동안 이 문제를 붙잡고 있었는데 결국은 ArrayList으로 간단하게 해결했다. 문제를 어렵게 푸는 경향이 있는 것 같다. 왜인지 1차인데 어렵다 했다. LRU를 이중 연결 리스트로 구현한다는 접근 방식에서 삽질을 했던 것 같다. ArrayList의 remove의 쓰임을 새롭게 알게 됐다. 처음..

Algorithm 2023.07.18

[프로그래머스] Java 요격 시스템

https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 관련 개념 그리디, 스케줄링 문제 접근 target[i][1] 기준으로 정렬 [[1,4],[3,7] [4,5],[4,8] [5,12],[10,14],[11,13]] 첫 번째 set target[1][] = [1,4] target[i][1] = 4 이상이면 멈춰야 한다. set1 : [1,{4}],[3,7] -> set1의 첫 번째 항목의 index 1의 값이 기준이다. 이후 항목의 index 0..

Algorithm 2023.06.30

[프로그래머스] 완주하지 못한 선수 Java

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42576?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 participant(참가자 목록)와 completion(완주자 목록) 배열을 비교하여 완주자 목록에 없는 한 사람만 찾아내면 된다. 참고 사항 동명이인이 있을 수 있음을 유념한다. 구현 착안 value는 중복 저장될 수 있지만(e.g. 위의 문제에서 동명이인) key는 중복 저장될 수 없고, 만약 기존에 저장된 key와 동일한 key로 value를 ..

Algorithm 2023.06.20

[프로그래머스] Java 게임 맵 최단거리

https://school.programmers.co.kr/learn/courses/30/lessons/1844?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS 구현 시 LinkedList vs. ArrayDeque 참고한 블로그 https://tecoble.techcourse.co.kr/post/2021-05-10-stack-vs-deque/ Java 의 Stack 대신 Deque 🤹‍♀️ 자바에서 자료구조 Stack 을 대신해서 사용하는 Deque 에 대해서 알아보자. 이 글은 기능을 사용하는 방식이 아닌 ‘왜 Stack..

Algorithm 2023.06.19