본문 바로가기

알고리즘 문제풀이/프로그래머스16

[프로그래머스] 행렬 테두리 회전하기 - 자바(Java), 구현, 2021 Dev-Matching: 웹 백엔드(상반기) 문제 https://programmers.co.kr/learn/courses/30/lessons/77485 풀이 코드 - 구현 풀이 과정 좌측 상단 테두리 (x1, y1) 위치의 값을 저장해 놓는다. 행렬의 좌측 테두리 -> 하단 테두리 -> 우측 테두리 -> 상단 테두리 순으로 시계 방향으로 행렬의 값을 한칸씩 이동시킨다. 저장해 두었던 좌측 상단 테두리 값을 (x1, y1+1) 위치에 저장한다. class Solution { public int[] solution(int rows, int columns, int[][] queries) { int[] answer = new int[queries.length]; int[][] board = new int[rows+1][columns+1]; int num .. 2021. 10. 21.
[2019 KAKAO BLIND RECRUITMENT] 오픈채팅방 - 자바(Java) 문제 https://programmers.co.kr/learn/courses/30/lessons/42888 풀이 코드 import java.util.*; public class Solution { static class Message { String status; String id; public Message(String status, String id) { this.status = status; this.id = id; } } public String[] solution(String[] record) { //리스트에 메시지의 종류(Enter 또는 Leave)와 id 값을 저장한다. List messages = new ArrayList(); //맵에 아이디와 그에 맞는 닉네임을 저장한다. Map map .. 2021. 10. 15.
[2020 KAKAO BLIND RECRUITMENT] 문자열 압축 - 자바(Java) 문제 https://programmers.co.kr/learn/courses/30/lessons/60057 풀이 코드 첫 풀이때 문자열의 길이가 1인 경우를 고려하지 못하여 풀이에 실패 했었다. 프로그래머스 채점시 테스트 5번만 실패한다면 문자열의 길이가 1인 경우를 확인해보자. public class Solution { public int solution(String s) { int answer = Integer.MAX_VALUE; //문자열 길이가 1인 경우 정답은 1 if(s.length() == 1) { return 1; } for(int i = 1; i 1) { sb.append(count); } sb.append(target); answer = Math.min(answer, sb.length(.. 2021. 10. 15.
[프로그래머스] 단체사진 찍기(2017 카카오 코드 본선) - 자바, DFS(깊이 우선 탐색) 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/1835 문제 풀이 DFS(깊이 우선 탐색)을 사용하여 순열을 만들고 주어진 조건을 만족하는지 검사한다. 어떤 이유인지는 잘 모르겠지만, answer를 solution 메서드에서 초기화해주지 않으면 프로그래머스 테스트에서 통과가 되지 않는다. class Solution { static String[] conditions; static int[] check; static char[] arr; static char[] friends = {'A', 'C', 'F', 'J', 'M', 'N', 'R', '.. 2021. 7. 22.
[프로그래머스] 소수 찾기 - JAVA, DFS(깊이 우선 탐색) 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 numbers return "17" 3 "011" 2 입출력 예 설명 예제 #1 [1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다. 예제 #2 [0, 1, 1]으로는 소수 [11, .. 2021. 7. 16.
[프로그래머스] 타겟 넘버 - 자바(java), 깊이 우선 탐색(DFS) 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연수입니다. .. 2021. 7. 12.