본문 바로가기

분류 전체보기

(386)
[pro] 프로그래머스 level3 132266 부대복귀 (Java) - 다익스트라 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/132266 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] source와 destination이 존재하고 최단시간을 구하는 문제이므로 다익스트라로 풀 수 있다. 여러개의 source와 하나의 destination으로 주어지지만 이를 바꿔서 생각해도 문제될 게 없기 때문에 출발지점을 destination으로 놓고 풀도록 한다. [코드] import java.util.*; class Solution { public List graph; i..
[pro] 프로그래머스 level3 138475 억억단을 외우자 (Java) - dp [문제] https://school.programmers.co.kr/learn/courses/30/lessons/138475 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] s
[pro] 프로그래머스 level3 136797 숫자 타자 대회 (Java) - dfs, dp [문제] https://school.programmers.co.kr/learn/courses/30/lessons/136797 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] dp를 이용해 메모이제이션 하지 않는다면 테스트케이스 후반부에 시간초과가 발생한다. 1. 먼저 0~9까지의 숫자에 대한 가중치 배열을 초기화한다. cost[i][j]에는 키패드의 숫자 i에서 j로 손가락을 움직일 경우의 가중치 값이 저장되어 있다. 같지 않고 인접하지 않는 숫자를 누를 경우, cost[i][j] = min*3 + (max-min)*2와 같이 표현할 수 있다. 2..
[pro] 프로그래머스 level2 138476 귤 고르기 (Java) [문제] https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] Collections.sort(list, Collections.reverseOrder())로 오름차순 정렬을 할 수 있음. [코드] import java.util.*; class Solution { public int solution(int k, int[] tangerine) { int answer = 0; // 귤 k개를 고를 때 크기가 서로 다른 종류의 수의 최솟값을 ret..
[pro] 프로그래머스 level3 81303 표 편집 - 스택 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/81303 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] LinkedList 등을 이용하여 실제 행을 삭제하고 복구하는 행동 없이(이 경우 삭제, 복구를 위한 탐색 시간 소요 때문에 효율성 테스트를 통과 못함) Stack을 이용해서 현재 행의 삭제 여부만 판단할 수 있도록 한다. 행 삭제 후 현재 행의 위치를 계속 바꿔주기 때문에 Stack에는 같은 행이 여러번 들어갈 수 있다. 따라서 남은 table size 만큼 "O"로 채워준 후..
[pro] 프로그래머스 level2 77485 행렬 테두리 회전하기 (Java) - 시뮬레이션 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 회전 구현 시 처음 (r1, c1)값이 사라지지 않도록 temp에 저장해놓는다. 또한 값을 보전하기 위한 구현 순서(위, 왼쪽, 아래, 오른쪽 순서)와 이동 방향에 주의해야 한다. [코드] class Solution { int[][] map; public int[] solution(int rows, int columns, int[][] queries) { int[] answer ..
[pro] 프로그래머스 level2 81302 거리두기 확인하기 (Java) - BFS [문제] https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 맨해튼 거리가 2이하인 경우는 크게 3가지로 나눌 수 있다. 1. 상하좌우 위치. 맨해튼 거리 1인 경우 -> 바로 false 2. 상하좌우 위치. 맨해튼 거리 2인 경우 -> 사이에 X가 없다면 false 3. 대각선 위치. 맨해튼 거리 2인 경우 -> 양 옆에 하나라도 X가 없다면 false [코드] import java.util.*; class Solution { int[]..
[pro] 프로그래머스 level1 81301 숫자 문자열과 영단어 (Java) [문제] https://school.programmers.co.kr/learn/courses/30/lessons/81301 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] HashMap을 이용. [코드] import java.util.*; class Solution { public int solution(String s) { int answer = 0; String[] words = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; // s가 의미하는 ..