프로그래머스 lv3

    [프로그래머스, 59042] 없어진 기록 찾기 (mysql)

    https://school.programmers.co.kr/learn/courses/30/lessons/59042 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krSELECT animal_id, nameFROM animal_outsWHERE animal_id NOT IN ( SELECT animal_id FROM animal_ins)ORDER BY animal_id

    [프로그래머스, 131123] 즐겨찾기가 가장 많은 식당 정보 출력하기 (mysql)

    https://school.programmers.co.kr/learn/courses/30/lessons/131123 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krSELECT food_type, rest_id, rest_name, favoritesFROM rest_infoWHERE(food_type, favorites) IN ( SELECT food_type, MAX(favorites) FROM rest_info GROUP BY food_type)ORDER BY food_type DESC;

    [프로그래머스, 43164] 여행경로 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 68.2 MB, 시간: 0.87 ms사용 알고리즘: DFS 동일한 공항을 출발지로 하는 티켓이 여러 개일 수 있다.따라서 공항을 key값으로,key 공항을 출발지로 하는 티켓의 인덱스를 담은 리스트를 value값으로 가지는 Map을 만들어준다. 위의 Map을 만들기 전에,가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 해야 하므로,도착지를 기준으로 tickets을 사전..

    [프로그래머스, 64062] 징검다리 건너기 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 67.1 MB, 시간: 92.76 ms사용 알고리즘: 우선순위 큐, 그리디 알고리즘 건널 수 있는 친구들은 모두 건너고, 마지막 친구가 건너는 상황이라고 가정현재 위치 point에서 k칸 내에 있는 디딤돌 중, 가장 숫자가 큰 디딤돌로 이동징검다리를 건널 때까지 항상 범위 내 가장 숫자가 큰 디딤돌로 이동한다.밟은 디딤돌 중 숫자가 가장 작은 디딤돌이 사라지면, 더 이상 다른 친구가 건널 수 ..

    [프로그래머스, 67258] [카카오 인턴] 보석 쇼핑 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 81.3 MB, 시간: 43.88 ms사용 알고리즘: 투 포인터, 자료구조 Set을 사용해서 보석의 종류를 구하고투 포인터(left, right)로 모든 종류의 보석을 포함한 구간을 구한다.left ~ right에 포함된 보석의 개수를 Map에 담아준다.만약 Map의 size가 보석의 종류보다 작다면 right을 한 칸 이동해 범위를 늘려주고,Map의 size가 보석의 종류보다 크거나 같다면 ..

    [프로그래머스, 64064] 불량 사용자 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 98.7 MB, 시간: 29.14 ms사용 알고리즘: 비트 마스킹, 자료구조, 조합, 문자열 하나의 banned_id에 대해 모든 user_id를 확인하며 가능한 user_id 목록을 구한다.(user_id와 banned_id는 최대 8개의 아이디를 가지고 있고, 각 아이디는 최대 길이 8이므로 충분히 가능) banned_id의 각 아이디에 대칭될 수 있는 user_id 목록은 구했으므로, 가..

    [프로그래머스, 12971] 스티커 모으기(2) (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 60.5 MB, 시간: 18.85 ms사용 알고리즘: 다이나믹 프로그래밍 현재 스티커를 뜯는 경우 중 최대값(dp[i][1])과 뜯지 않는 경우 중 최대값(dp[i][0])을 담은 dp 배열을 만든다.0번 스티커부터 차례대로 스티커를 뜯는 경우를 구해주는데, 현재 스티커를 뜯을 거라면 앞 스티커는 뜯지 않은 상태여야 한다.dp[i][1] = dp[i - 1][0] + sticker[i] 현재 ..

    [프로그래머스, 250134] [PCCP 기출문제] 4번 / 수레 움직이기 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/250134 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 88.9 MB, 시간: 7.35 ms사용 알고리즘: DFS, 백트래킹, 완전탐색 maze의 크기가 최대 4 x 4 밖에 되지 않기 때문에 모든 경우를 다 구해주었다.조건에 맞게 dfs로 수레들을 가능한 모든 경우로 다 이동해 본 후 최솟값을 구해준다. 중복된 코드가 많고 조건문 깊이가 깊고 코드도 길어졌다.좀 더 보기 편하게 구현할 수도 있을 것 같은데, pccp 준비하며 시간제한 걸고 푸느..

    [프로그래머스, 42579] 베스트앨범 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 73.4 MB, 시간: 0.82 ms사용 알고리즘: 자료구조 import java.util.*;class Solution { public int[] solution(String[] genres, int[] plays) { // 장르 별 수록 총합 ArrayList playsPerGenres = new ArrayList(); ..

    [프로그래머스, 12979] 기지국 설치 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/12979 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 52.6 MB, 시간: 0.98 ms사용 알고리즘: 구현 기지국들 사이의 빈 공간에 필요한 만큼 기지국을 새로 설치한다.class Solution { public int solution(int n, int[] stations, int w) { int answer = 0; int start = 1; // 전파가 닿지 않는 구간의 시작점 f..