본문 바로가기

분류 전체보기

(328)
[프로그래머스] 도둑질 https://school.programmers.co.kr/learn/courses/30/lessons/42897 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제분석 첫번째 집을 방문하거나, 첫번째 집을 방문하지 않는경우를 분기시켜 최대값을 구하면 된다. 첫번째 집을 방문한경우는 마지막 집을 방문할 수 없다. 첫번째 집을 방문하지않는 경우는 마지막 집을 방문할 수 있다. i번째의 최대값을 구할때 2가지의 값중 최대값을 갱신시켜준다. i-2 번째에서 온경우 자기자신이 방문 가능함 dp[i-2] + money[i] i-1 번째에서 온경우 자기자신이 방..
[프로그래머스] 이중우선순위큐 https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제분석 최대 힙큐와 최소힙큐를 두어서 최대값과 최소값을 POP 할때마다 자료를 옮긴뒤 POP 해주면 된다. 배열에 집어 넣을때에는 최소 힙큐에 집어넣는다. 최대값을 꺼낼때에는 최소 힙큐에 모든 값을 최대 힙큐에 넣어준다. 그리고 최대 힙큐를 POP 한다. 최소값을 꺼낼때에는 최대 힙큐에서 모든 값을 최소 힙큐에 넣어준다. 그리고 최소 힙큐를 POP 한다. 💻 코드 import java.uti..
[프로그래머스] 전력망을 둘로 나누기 https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제분석 모든 간선을 기록해두고, 하나의 간선을 제외한뒤 각각의 그룹의 개수를 카운팅하여 가장 작은 값을 갱신하여 정답을 출력하면 된다. 💻 코드 import java.util.*; class Solution { static int nodeSize; public int solution(int n, int[][] wires) { nodeSize = n+1; List edges = new Arra..
윈도우 함수 (Window Function) 정의 윈도우 함수란 행과 행 간의 관계를 정의하기 위해 제공되는 함수 입니다. 여기에서의 관계를 정의한다는 것은 비교, 연산, 행 위치 조작을 말한다. 비교, 연산 : SUM,AVG,MIN,MAX 행 위치조작 : ROWS, RANGE SUM, AVG, MIN, MAX에 대해서는 Group BY에서 자주 사용했으므로 설명을 생략하겠다. 윈도우 절의 구조 ROWS 물리적인 행 RANGE 논리적인 행 UNBOUNED PRECEDING 첫 번째 행 UNBOUNED FOLLOWING 마지막 행 CURRENT ROW 현재 행 PRECEDING 이전 행 (위치) FOLLOWING 다음 행 (위치) CURRENT ROW 현재행을 가르킵니다. ROWS ROW BETWEEN AND ROWS는 물리적인 행위치를 기준으로 정..
[프로그래머스] 베스트 앨범 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제분석 장르별로 음악을 묶는다. 장르별로 묶을때 우선순위 큐를 활용하여 묶는다. 장르별로 묶은다음 큐에서 2개씩 꺼내어 결과에 집어넣으면 된다. 💻 코드 import java.util.*; // // 가장 많이 재생된 노래를 두개씩 모아 베스트 앨범을 출시 // 각 장르별로 우선순위 큐를 활용하여 최대 2개씩 뽑아야한다. // (장르, 재생횟수), Map(장르,노래들) class Soluti..
[프로그래머스] 완주하지 못한선수 https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제분석 해시맵 2개를 이용하여 문제를 해결하면된다. 이름은 Key로 Value는 중복될 수 있기때문에 Integer 값을 두어 사람의 이름별로 카운팅한다. 참가자와 도착한 사람을 비교해서 만약 사람의 사람의 수가 1 이상이라면 그 사람의 값을 출력하면된다. 💻 코드 import java.util.HashMap; import java.util.Map; public class Solution {..
[프로그래머스] 퍼즐조각 채우기 🤔 문제분석 게임테이블에서의 빈칸의 퍼즐과 맞춰야할 테이블에서의 퍼즐을 구한뒤에 퍼즐을 돌려가면서 빈칸에 맞추어본다. 맞추는 로직은 equals를 활용하였는데 퍼즐의 높이와, 너비, 그리고 값 까지 모두 같을경우에만 퍼즐을 조립해준다. BFS로 방문한 그룹을 배열로 퍼즐로 변환하는 구현과 배열을 돌리는 구현이 이 문제의 핵심이라고 생각한다. 💻 코드 import java.util.*; class Solution { boolean[][] visited; boolean[][] visited2; int[][] game_board; int[][] table; int h, w; int answer = 0; public int solution(int[][] game_board, int[][] table) { thi..
[백준] 9370번 : 미확인 도착지 9370번: 미확인 도착지 9370번: 미확인 도착지 (취익)B100 요원, 요란한 옷차림을 한 서커스 예술가 한 쌍이 한 도시의 거리들을 이동하고 있다. 너의 임무는 그들이 어디로 가고 있는지 알아내는 것이다. 우리가 알아낸 것은 그들이 s지점에서 www.acmicpc.net 🤔 문제분석 s에서 e로 갈때 g, h를 방문했는지 여부를 확인하는 문제로 데이크스트라를 s에서 시작, g에서 시작, h에서 시작하여 각각의 거리를 측정한뒤 아래의 조건을 만족하면 s 에서 e로 갈때 g, h를 방문했는지 확인 할 수 있다. d_s[g] + d_g[h] + d_h[e] == d_s[e] 일때 d_s[h] + d_h[g] + d_g[e] == d_s[e] 일때 💻 코드 import sys import heapq in..