전체 글 211

[프로그래머스] 거리두기 확인하기 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/81302#fn1 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 대기실은 5개이며, 각 대기실은 5x5 크기입니다. 거리두기를 위하여 응시자들..

[프로그래머스] 멀쩡한 사각형 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 풀이 y = h/w * x 아래와 같이 일차 방정식이라 생각하고 x의 값을 대입하면서, 소수점 값이 나오면 해당 소수점을 버리고 더해주었다. 그러면 절반의 넓이에 해당하는 사각형 개수를 구할 수 있고, 여기에 2를 곱하면 답이 된다. 소스코드 class Solution { public long solution(int w, int ..

[프로그래머스] 베스트앨범 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/42579# 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 풀이 Genre와 Song을 클래스로 구현하여 쉽게 풀 수 있다. 해당 문제의 목적은 장르 별로 가장 많이 재생된 노래 두 개를 출력하는 것이다. 아래의 같은 조건이 있다. 1. 장르 내 속한 노래의 총 재생 횟수가 가장 많은 장르 부터 출력 - 모든 장르의 총 재생 횟수는 다르다. - 만약 장르내 속한 곡이 한 개라면 한 개만 출력한다. 2. 장르 내..

[BOJ 2805] 나무 자르기 (Java)

문제 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 풀이 절단기의 설정할 수 있는 높이로 이분 탐색을 하여 풀었다. 예제를 그려보면 다음과 같다 적어도 7미터의 나무를 집에 가져가기 위해서 절단기에 설정할 수 있는 높이의 최댓값을 구하는 문제이다. 최초 시작과 끝을 아래와 같이 설정한 후, 이분 탐색을 진행하여 답을 구할 수 있다. 절단기에 설정할 수 있는 최소 H: 0 절단기에 설정할 수 있는 최대 H..

[프로그래머스] 3 x n 타일링 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/12902# 코딩테스트 연습 - 3 x n 타일링 programmers.co.kr 풀이 전형적인 dp문제로 규칙을 찾아서 점화식을 세워서 풀 수 있다. 아래 문제는 조금 더 쉬운 버전이다. 2021.10.29 - [Problem Solving/Programmers] - [프로그래머스] 2 x n 타일링 (Java) [프로그래머스] 2 x n 타일링 (Java) 문제 https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 ..

[BOJ 2110] 공유기 설치 (Java, Python)

문제 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 풀이 이분 탐색을 이용하여 풀 수 있다. 처음에 문제를 이해하는데 시간이 걸려서, 최대한 자세히 풀이를 써보려고 한다. 예제는 다음과 같다. 집의 개수 : 5개, 공유기 개수: 3개 5 3 1 2 8 4 9 여기서 구해야 할 것은?? 가장 인접한 두 공유기 사이의 최대 거리를 출력하는 것이다. 아래와 같이 집이 위치해있다고 가정했을 때, 가..

[프로그래머스] 순위 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/49191# 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr n명의 권투선수가 권투 대회에 참여했고 각각 1번부터 n번까지 번호를 받았습니다. 권투 경기는 1대1 방식으로 진행이 되고, 만약 A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다. 심판은 주어진 경기 결과를 가지고 선수들의 순위를 매기려 합니다. 하지만 몇몇 경기 결과를 분실하여 정확하게 순위를 매길 수 없습니다. 선수의 수 n, 경기 결과를 담은 2차원 배열 results가 매개변수로 주어질 때 정확하게 순위를 매길 수 있는 선수의 수..

[프로그래머스] 호텔 방 배정 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/64063 코딩테스트 연습 - 호텔 방 배정 programmers.co.kr "스노우타운"에서 호텔을 운영하고 있는 "스카피"는 호텔에 투숙하려는 고객들에게 방을 배정하려 합니다. 호텔에는 방이 총 k개 있으며, 각각의 방은 1번부터 k번까지 번호로 구분하고 있습니다. 처음에는 모든 방이 비어 있으며 "스카피"는 다음과 같은 규칙에 따라 고객에게 방을 배정하려고 합니다. 한 번에 한 명씩 신청한 순서대로 방을 배정합니다. 고객은 투숙하기 원하는 방 번호를 제출합니다. 고객이 원하는 방이 비어 있다면 즉시 배정합니다. 고객이 원하는 방이 이미 배정되어 있으면 원하는 방보다 번호가 크면서 비어있는 방 중 가장 번..

[BOJ 9252] LCS 2 (최장 공통 부분 수열)

문제 https://www.acmicpc.net/problem/9252 9252번: LCS 2 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 풀이 2021.11.08 - [Problem Solving/BOJ] - [BOJ 9251] LCS 최장 공통 부분 수열 문제 (Java) [BOJ 9251] LCS 최장 공통 부분 수열 문제 (Java) LCS 문제란? 최장 공통 부분수열 문제는 LCS라고도 불린다. 이는 주어진 여러 개의 수열 모두의 부분수열이 되는 수열들 중에 가장 긴 것을..

[프로그래머스] 행렬 테두리 회전하기 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 풀이 단순 구현문제인데 너무 어렵게 생각했던 것 같다. 시계 방향으로 돌면서 이전 값을 현재 값으로 갱신해주는 것을 반복하면 된다. 현재 값을 갱신할 때 최소값 비교를 통해 최소값 또한 갱신한다. 소스코드 import java.util.*; class Solution { public int[][] map; public ArrayList a..