본문 바로가기

Algorithm/프로그래머스풀이46

[알고리즘 문제풀이] 프로그래머스 - 단어 변환 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr /** 1. queue를 사용하여 변경가능한 단어 변경 2. 해당 단어를 썻는지 안썻는지 체크 3. 변경할때 변경회수 증가 4. target과 동일 시에 변경횟수 반환 **/ import java.util.*; class Solution { public class Word{ String word; int cnt; pub.. 2022. 4. 7.
[알고리즘 문제풀이] 프로그래머스 - n^2 배열 자르기 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/87390 코딩테스트 연습 - n^2 배열 자르기 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부 programmers.co.kr /** 1. 구현.. 2. i행 i열까지 모든 숫자를 i로 채운다는 것은 행과 열중에 높은 숫자가 들어간다는 것. 즉 2,3 이면 더 높은 숫자인 3으로 채워져 있고, 5,3 이면 더 높은 숫자인 5로 들어가져 있음. 1 2 3 2 2 3 3 3 3 3. 2차원 배열을 모두 이어붙인 1차원 배열에서 le.. 2022. 4. 5.
[알고리즘 문제풀이] 프로그래머스 - 가장 큰 정사각형 찾기 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/12905 코딩테스트 연습 - 가장 큰 정사각형 찾기 [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9 programmers.co.kr /** 1. 1000*1000에서 가장 큰 정사각형 찾기 2. 완탐은 불가..(10^3*10^3*10^3) 3. dp..? 4. dp로 사각형 모양(현재위치,위,좌측,대각선) 전부 존재할때 가장 적은 값 +1로 설정 5. dp[세로][가로] = 길이 1000*1000으로 해결! 10^6 **/ class Solution { public int solution(int [][]board) { int result = 0; for(int i = 0; i < b.. 2022. 4. 3.
[알고리즘 문제풀이] 프로그래머스 - 쿼드압축 후 개수 세기 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/68936 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr /** 1. 분할정복으로 2^n * 2^n이 같은 숫자로 안되어있으면 분할 2. 최종분할로 들어간게 같은 숫자로 이루어져있으면 체크 3. 0과 1의 개수 반환 **/ clas.. 2022. 4. 3.
[알고리즘 문제풀이] 프로그래머스 - 이진 변환 반복하기 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr /** 1. replaceAll로 0 제거. 2. 길이비교하여 0 제거 개수 체크 3. 남은 길이를 2진법으로 다시 변환 4. 반복하여 1이 남을때까지 체크하여 정답 반환. **/ class Solution { public int[] solution(String s) { int zeroCnt = 0; int convertCnt = 0; while(!s.equals("1")){ int length = s.length(); s = s.replaceAll("0",""); int newLength = s.length(); zeroCnt +=.. 2022. 3. 27.
[알고리즘 문제풀이] 프로그래머스 - 모음사전 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/84512 코딩테스트 연습 - 모음사전 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니 programmers.co.kr /** 1. dfs 풀이 **/ class Solution { public String[] dict; public int cnt = 0, answer = 0; public int solution(String word) { dict = "AEIOU".split(""); dfs("", word); return answe.. 2022. 3. 26.
[알고리즘 문제풀이] 프로그래머스 - 등굣길 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr /** 1. dp 풀이 2. 현재 좌표로 올수 있는건 위에서 오는거랑 왼쪽에서 오는 것 뿐. 3. 물웅덩이는 계산하지말고 패스할 것. **/ class Solution { public int solution(int m, int n, int[][] puddles) { int answer = 0; int[][] dp = new int[n+1][m+1]; .. 2022. 3. 22.
[알고리즘 문제풀이] 프로그래머스 - 디스크 컨트롤러 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr /** 1. 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법으로 평균 반환 1-1) 같은 시간에 요청중인 작업이 있다면 적은 작업시간부터 할 것!(sjf) 2. 현재 작업시작시간과 끝나는 시간을 표기해두고, 그안에 요청 들어온 작업들을 하나씩 처리하는 형태로 구현. 3. 우선순위큐에 요청시간 순 정렬해서 넣어두고, 그시간에 맞는 요청들을 하나.. 2022. 3. 21.