[프로그래머스 알고리즘 고득점 Kit][동적계획법(Dynamic Programming)][Java] 사칙연산
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/1843 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 틀린코드작은 영역부터 잘라서 왼쪽의 최대 최소, 오른쪽 최대 최소를 이용해 특정 영역의 최댓값을 구한다.간격이 가장 작은 2부터 0~0 최대 최소 0~2 최대 최소 2~4 ...를 찾아가고간격이 커지면서 0~4 4~8 .. 이렇게 범위를 늘려간다.그렇게 되면 N^3의 시간복잡도가 나오는데 시간초과가 떴다.복잡도를 줄이는 건 도저히 모르겠어서 의심되는 곳을 바꿔보기로 했다.class Solution { public int solution(St..
[프로그래머스 알고리즘 고득점 Kit][정렬][Java] 가장 큰 수
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 2개의 문자열을 사전순 역으로 하면아래처럼 쉽게 할 수 있다. 길이가 달라도 2개를 이어 붙여서 판단하면 간단하게 할 수 있다.그렇게 정렬하면 맨앞에 0이 오는 경우를 제외하고는 이어 붙여서 반환하면된다. import java.util.*;class Solution { public String solution(int[] numbers) { String[] numStr = new String[numbers.length]; f..
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 단어 변환
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/43163?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. target이 단어 집합에 있나 확인 -> 없어서 틀렸었음2. 하나가 다르면 바꿀 수 있다를 갈 수 있다고 생각하면 Node끼리의 최단 거리로 생각할 수 있다.3. bfs에 begin을 넣고 단어 집합에 하나만 다른 단어를 q에 넣고 count를 늘려서 레벨별로 나아간다.3.1) Node 클래스를 만들어서 count를 같이 보내주면서 노드 하나씩 보는 방법도 있지만 여기서는 같은 레벨에 있는 단어들을 하나씩 확인하고 다음으..
[프로그래머스 알고리즘 고득점 Kit][동적계획법(Dynamic Programming))][Java] N으로 표현
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음보는 형태의 dp 문제였다.점화식으로 이전 값을 활용하는 것이 아니라나올 수 있는 결과들을 다음 결과들을 만드는 데 사용한다.여기서 출력 조건이 8개보다 크면 -1을 출력을 하라고 했는데이건 다 풀고 나서야 힌트라는 것을 알게 되었다.8개까지만 구하고 그 이후는 계산할 필요가 없다는 생각으로사용갯수가 1개인 것부터 하나씩 나올 수 있는 결과들을 만들어서 넘어가는 식으로 풀 수 있다.연산의 결과가 중복이 많았기 때문에 Set으로 관리했다.N을 1개..
[프로그래머스 알고리즘 고득점 Kit][이분탐색][Java] 징검다리
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/43236 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krhttps://www.acmicpc.net/problem/2110백준의 공유기 설치와 동일한 문제하지만 징검다리가 문제는 억지로 끼워맞춘 느낌이라 이해하기 쉽지 않았음 1. 정답 코드문제를 조금 이해하기 쉽게 나의 언어로 바꿔 말한다면,임의의 위치의 바위를 n개 부쉈을 때시작점, 바위들, 도착지 사이의 거리들을 나열할 수 있다.그 거리들 중에는 항상 최소가 되는 거리가 있는데,이 문제는 그 최소 거리가 최대가 되게 만드는 문제다.예를 들어,출발지점 - 바..
[프로그래머스 알고리즘 고득점 Kit][그래프][Java] 순위
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/49191 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 정답 코드 뭔가 스태틱 변수를 안쓰고 메서드로 분리하려다 보니 복잡해졌는데내가 이긴 사람 수와 내가 진 사람 수의 합이 나를 제외한 n-1 과 같으면 순위를 알 수 있다.그래서 2개의 단방향 그래프를 기록하고 bfs 2번을 돌리는 식으로 계산했다.모든 노드의 거리를 알 수 있는 플로이드 워셜로도 풀 수 있다.import java.util.*;class Solution { public int solution(int n, int[][] resul..