💡Problem Solving/Programmers 72

[프로그래머스] 쿼드 압축 후 개수 세기 (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 풀이 대표적인 분할 정복 문제로, 재귀 함수를 사용하여 작게 쪼개면서 푼다. 아래와 백준 문제와 풀이가 동일하다. 2021.11.16 - [Problem Solving/..

[프로그래머스] 방금그곡 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/17683 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 풀이 왜 이렇게 말을 꼬아놨는지 문제를 이해하는데 너무 오래걸린다. 이 문제는 단순 구현 문제로 어려운 문제는 아니다. '#' 기호가 음악 매칭할 때 걸리적 거릴게 눈에 훤해서, 애초에 내가 기억한 멜로디에서 해당 기호를 떼고 다 소문자로 치환해주었다. MusicInfo는 클래스를 생성하였다. 이 때에도 '#'기호를 떼줘야 한다. 문자열 덩어리..

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

문제 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 풀이 의상을 입는 조합의 수를 구하는 문제이다. 종류에 따른 의상 수를 구한다. HashMap 이용 얼굴 - 2 상의 - 1 하의 - 1 겉옷 - 1 조합의 수는 각 의상 수를 곱해주면 되는데, 의상을 입지 않는 경우의 수가 있으므로 +1을 한 후 곱한다. 3 * 2 * 2 * 2 = 24 의상을 최소 한 개는 입어야 한다는 조건이 있으므로 여기서 의상을 모두 안입는 경우의 수 (-1)를 빼줘야 한다. 24 - 1 = 23 아래 백준 문제와 풀이가 동일하다. 2021.11.11 - [Problem Solving/BOJ] - [BOJ 9375]..

[프로그래머스] 실패율 (Java, Python)

문제 https://programmers.co.kr/learn/courses/30/lessons/42889# 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 풀이 단순 구현 문제이다. 변수가 헷갈려서 머리가 핑 도는 모먼트가 몇 번 있었다. Stage 클래스를 만들어서 문제를 풀었다. 소스코드 import java.util.*; class Stage implements Comparable{ int no; double passCnt; double failCnt; double rate; public Stage(i..

[프로그래머스] 단체사진 찍기 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/1835?language=java 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr 풀이 완전 탐색과 DFS로 풀었다. 데이터 개수가 8개로 정해져 있고 크지 않기 때문에 시간초과는 발생하지 않았다. 모든 경우의 수를 구하고, rule에 부합하지 않는 케이스는 count 하지 않는다. 소스코드 import java.util.*; class Solution { public boolean[] used; public ..

[프로그래머스] 디스크 컨트롤러 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/42627# 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 문제 설명 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은..

[프로그래머스] 키패드 누르기 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 풀이 단순 구현 문제로 키패드 좌표를 2차 배열로 만들어 놓고 시작한다. 첫번째 열은 왼쪽, 마지막 열은 오른쪽 손을 사용하며 중간 열은 왼손, 오른손의 현재 위치와 누를 숫자의 위치 간 거리를 계산하여 거리가 짧은 손으로 키패드를 누른다. 거리가..

[프로그래머스] 구명보트 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/42885# 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 풀이 프로그래머스는 문제를 꼼꼼히 읽어야 한다! 구명 보트의 최대 인원이 2명인 것을 간과하고 구현하는 바람에 시간 낭비를 한참 했다. 예시 1) limit: 100 [50, 30, 70, 50] people을 오름차순으로 deque에 넣는다. 30, 50, 50, 70 가장 큰 값과 가장 작은 값을 더한다. 70 + 30 더한..

[프로그래머스] 숫자 게임 (Java)

문제 https://programmers.co.kr/learn/courses/30/lessons/12987 코딩테스트 연습 - 숫자 게임 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 programmers.co.kr 풀이 설명은 복잡하게 해놨는데, 문제는 굉장히 쉽다. A와 B를 오름차순으로 정렬하고 B를 기준으로 순회하면서 현재 B값이 A보다 같거나 작을 경우 B의 다음 index 체크 현재 B값이 A보다 큰 경우를 A의 index를 증가 A: 1, 3, 5, 7 B: 2, 2, 6, 8 2 -> 6 -> 8 2는 3보다 작으므로 skip 순회가 끝난 ..