본문 바로가기

분류 전체보기159

[Java/프로그래머스/탐욕법(Greedy)] Level 2: 조이 스틱 문제 programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 코드 조이스틱을 위 아래로 조작하는 것과 좌우로 조작하는 것을 나누어 생각했다. 상하는 쉽게 해결됐지만 좌우는 탐욕법으로 해결했다. 현재 위치(pos)에서 가장 가까운 바꿔야 할 자리를 찾는다. → 왼쪽으로 A 개수와 오른쪽으로의 A 개수를 비교한다. (만약 이동횟수가 같을 때, 오른쪽으로 이동해야 한다.) visited 배열 A가 있는 위치는 tru.. 2020. 11. 9.
[Java/프로그래머스/DFS] Level 3: 단어 변환 문제 programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 코드 처음 문제를 봤을 때 DFS로 풀 생각도 하지 못했다...ㅎ 풀이 순서는, 1. DFS 함수 present가 target과 같아질 때 마친다. 단, 이 때의 지나쳐 온 단어 개수와 현재 answer를 비교해서 더 작은 것을 answer에 저장한다. 이 외에는 words 배열을 전체적으로 스캔하면서, 이미 확인한 단어인지 &.. 2020. 11. 6.
[Java/프로그래머스/DFS] 여행경로 문제 programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr 코드 처음엔 인접하는 공항들을 전부 adjacent에 넣어야 하는데 어떻게 해야할까 끙끙댔다. 다행히 tickets는 양방향이 아닌 순서가 있는 것이라, dfs함수의 if문에서 조건을 걸러낼 수 있었다. import java.util.ArrayList; import java.util.Collections; public class Solution { boolean[] visited; //방문한지.. 2020. 11. 5.
[Java/프로그래머스/BFS] 네트워크 문제 programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 코드 import java.util.*; class Solution { static boolean[] visited; static int cnt; public static void bfs(int start, ArrayList[] adjacent){ Queue q = new LinkedList(); q.offer(start); cnt++; while(!q.isEmpt.. 2020. 10. 29.
[Java/프로그래머스/힙(Heap)] 이중우선순위큐 문제 programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 코드 woovictory.github.io/2018/03/19/JavaCollectionPriorityQueue/ [Java] Priority Queue 이번에는 Priority Queue에 대해서 공부를 해보았습니다. woovictory.github.io 자바의 PriorityQueue는 우선순위가 가장 작은 값을 출력하는 함수만 있기 때문에 이를 어떻게 다뤄서 최댓값을 출력할지 고민해보면 된다. 나는 마지막 원소를 제외한 모든 원소를 ArrayList에 담아놓고, 마지막 원소도 삭제한 뒤에 ArrayList 안의 값들을 다시 pq에 옮겨줬다. .. 2020. 10. 27.
[Java/프로그래머스/힙(Heap)] 디스크 컨트롤러 문제 programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를�� programmers.co.kr 해당 유형의 문제들을 코테에서 자주 접하게 된다. 항상 못풀었기에 이번엔 걍 배우는 마음으로 코드를 보기로 참고 velog.io/@sa833591/%EB%94%94%EC%8A%A4%ED%81%AC-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.. 2020. 10. 20.
[Java/프로그래머스/DFS] 타겟 넘버 문제 programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 코드 class Solution { static int answer; public void dfs(int index, int result, int[] numbers, int target){ if(index == numbers.length){ if(result==target) answer++; return; }else{.. 2020. 10. 19.
[Java/프로그래머스/힙(Heap)] 더 맵게 문제 programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같�� programmers.co.kr 코드 모든 원소가 K보다 커야 한다고 해서 for문으로 검사를 했었는데, 생각해보니 우선순위 큐라서 제일 앞의 원소만 K보다 큰지 확인해주면 됐었다. import java.util.PriorityQueue; class Solution { public int solution(int[] scoville, int K) { //int answer = 0; Pri.. 2020. 10. 16.
[Java/백준/DP] 1010번: 다리 놓기 문제 www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 코드 1(DP를 사용하지 않는 방법) 조합 공식을 그대로 사용했다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; class Main{ public static void .. 2020. 10. 16.