일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- 백준
- 진료과별 총 예약 횟수 출력하기
- 티스토리챌린지
- 정기 코딩 인증평가
- SSAFY
- 132202
- 후기
- MySQL
- java
- 12930
- 설명
- softeer
- 14942
- 오블완
- 해결
- 10기
- 소프티어
- SQL
- 수료
- 조건에 부합하는 중고거래 상태 구하기
- 59412
- 59409
- 싸피
- 165672
- 146355
- 퍼즐 조각 채우기
- PCCP
- 142085
- 핵심
- Today
- Total
목록알고리즘 (62)
개발 쥬스
🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr🔍 해결 과정송전탑의 개수의 최대 크기는 100이므로 완전 탐색의 방식을 활용하여 송전탑마다 연결되어 있는 전선의 개수를 하나하나 끊어가며 두 개의 전력망으로 구성이 되었을 때 송전탑의 개수의 차이를 비교해주었습니다. 자세한 과정은 다음과 같습니다.1️⃣ 트리로 구성되어 있는 송전탑 전용 그래프 변수를 만들어준다. (그래프의 사이즈는 n + 1로 설정했다.)2️⃣ wires를 활..
🔗 문제 링크: https://www.acmicpc.net/problem/21609🔍 해결 과정이 문제는 시뮬레이션 문제로 시간 초과 걱정할 필요 없이 조건에 맞춰 문제를 해결하면 됩니다. 개인적으로 코드를 작성하는 과정에 있어서 디버깅 등의 시간도 할애하느라 시간을 많이 썼던 문제였습니다. 처음에 문제를 보고 핵심 조건에 맞춰서 그에 맞는 메서드를 분류했습니다. 핵심 기능들은 다음과 같습니다.1️⃣ 크기가 가장 큰 블록 그룹을 찾는 기능2️⃣ 기준 블록이 속한 블록 그룹에 있는 블록들을 제거하는 기능 (제거하면서 점수를 반환한다.)3️⃣ 중력 작용 기능4️⃣ 90도 반시계 방향 회전 기능 메인 함수에서는 위와 같이 4개의 핵심 기능들을 정의하였고, 조건에 맞춰서 핵심 기능들을 구현하는 방향으로 문제..
🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔍 해결 과정dungeons의 최대 길이가 8이므로 완전 탐색을 활용하여 모든 순서에 대해서 탐험할 수 있는 던전의 최대 개수를 구하는 방법으로 코드를 구현하였습니다. 시간 복잡도: O(n!) (n: 던전의 개수) ✏️ 코드class Solution { public int solution(int k, int[][] dungeons) { return get..
🔗 문제 링크: https://www.acmicpc.net/problem/1167🔍 해결 과정문제 예시를 바탕으로 트리를 만들어보면 다음과 같습니다.여기에서 1번 노드와 6번 노드까지의 거리가 11로 트리에서 가장 최대의 거리를 나타내므로 11이 이 트리의 지름값이라고 할 수가 있습니다. 만약 노드 V의 최대 개수가 최대 10만개가 아니고 매우 작은 값이었다면 단순하게 모든 노드를 시작점으로 했을 때의 dfs를 돌려서 최대 거리값을 구했겠지만 노드의 개수가 최대 10만개이기 때문에 모든 노드마다 dfs를 돌리기에는 시간 복잡도 O(V^2)이 나오기 때문에 다른 방식을 고민하는 일에 시간을 많이 쓴 문제였습니다. 과정을 세우기에 앞서서 다음과 같은 공식을 알아야 합니다.1️⃣ 임의의 노드 a를 한 시작..
🔗 문제 링크: https://www.acmicpc.net/problem/1068 🔍 해결 과정트리에서 특정 노드를 제거했을 때 그 특정 노드의 자식까지 전부 삭제를 해준 후 남은 리프 노드의 수를 반환하는 문제이므로 다음과 같은 과정을 세웠습니다.1️⃣ 트리에서 특정 노드가 리프노드인지 확인할 boolean형 배열 isLeaf를 만든다.2️⃣ 현재 트리에서 리프 노드를 찾아 isLeaf 배열을 수정한다. 아직 이 땐 특정 노드가 제거되지 않은 상태이다.3️⃣ 수정한 배열 isLeaf를 활용하여 리프 노드이면 리프 노드의 부모를 계속적으로 거스르며 삭제 제거 대상의 노드가 나오는지 탐색한다.4️⃣ 리프 노드의 부모들 중 제거 대상의 노드가 존재하지 않으면 리프 노드의 개수를 카운트한다. 노드의 개수의..
https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제를 이해하는데 시간이 오래 걸려 질문 게시판을 참고해서 이 문제를 이해했습니다. 문제 설명에서 애매한 부분이 있었는데 추가 설명을 하자면 특정 시간에서의 주식 가격이 자신의 가격보다 크거나 같은 시점을 유지하다 처음으로 내려가는 시점까지의 그 시간을 구하는 것이 이 문제의 핵심입니다. 다시 말해 주식 가격이 자기 자신보다 처음으로 내려 가는 시점 이후에는 주식 가격이 오르든 내리든 상관이 없습니다...