[프로그래머스 알고리즘 고득점 Kit][그리디][Java] 조이스틱
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42860 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 각 글자의 위 아래를 먼저 구한다. -> 이건 위나 아래를 눌러서 비교함2. 좌우 움직임 최소를 구한다. 1) A구간을 최대한 피하는게 이득 2) A구간이 2개이상이라면 구간 사이 처리해야할 글자가 생기기에 지나가야할 A구간은 무조건 생김 3) 그러면 최소 하나의 A구간은 피해도 됨 4) 피하지 않고 그냥 직진하는게 이득일 수도 있음 5) 직진하는 값과 피하는 것을 비교후 최소값을 구함 6) 피하는 것은 시작점을 기준으로 오른쪽으로 갔다가 왼쪽..
[프로그래머스][MySQL] 중복 제거하기
·
데이터베이스/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/59408 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krselect count(*) as countfrom (select namefrom animal_inswhere name is not nullgroup by name) as name_groupWHERE 절로 NULL 이름 제거→ GROUP BY로 중복된 이름을 하나로 묶기→ FROM 절의 서브쿼리에 별칭 필수(name_group) 지정→ 바깥 쿼리에서 결과 행의 개수 계산
[프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 주식가격
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 스택에는 아직 가격이 떨어진 시점을 찾지 못한 인덱스를 저장한다.현재 가격이 스택 맨 위 인덱스의 가격보다 낮다면, 해당 주식은 현재 시점에 처음 가격이 떨어진 것이다.answer[lastIdx] = i - lastIdx; 가격이 떨어진 인덱스를 계속 제거하기 때문에 스택의 가격은 아래에서 위로 비감소 순서를 유지한다.전체 순회 후 스택에 남은 인덱스는 끝까지 가격이 떨어지지 않은 경우이므로 마지막 시점까지의 시간을 계산한다.answer[idx] = p..
[프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 다리를 지나는 트럭
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 핵심트럭은 1초에 1칸씩 이동 (지문엔 명시 안 되어 있고, 예시 표로 유추해야 함)트럭 1대가 다리를 완전히 통과하는 데 정확히 bridge_length초 소요다리 위 트럭들의 무게 합이 weight를 넘으면 안 됨 (대기 중인 트럭 무게는 무시)풀이 전략큐 2개로 관리: waitingQ(아직 다리에 안 오른 트럭), bridgeQ(현재 다리 위 트럭, {진입시각, 무게} 저장)time을 1씩 증가시키며 매초 두 단계를 순서대로 체크내리기: br..
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 모음사전
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 방법DFS로 A,E,I,O,U를 사전순으로 조합해가며 문자열 생성문자열이 하나 완성될 때마다 cnt++target과 일치하면 found = true로 표시하고 탐색 중단 class Solution { char[] alphabets = {'A', 'E', 'I', 'O', 'U'}; int cnt = 0; boolean found = false; public int solution(String word) { ..
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 전력망을 둘로 나누기
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 프로그래머스 - 전력망을 둘로 나누기문제 핵심노드 n개, 간선(wires) n-1개 → 트리 구조트리에서 간선 하나를 제거하면 항상 정확히 2개의 컴포넌트로 나뉜다각 간선을 제거했다고 가정하고, 나뉜 두 그룹의 노드 개수 차이가 최소가 되는 경우를 찾는 문제풀이 전략인접 리스트 구성: wires를 이용해 양방향 그래프를 List[]로 만든다간선을 하나씩 제거해보며 BFSwires를 순회하면서 매번 간선 [u, v]를 "제거 대상"으로 정한다u에서 BFS..