프로그래머스 실패율 JAVA 풀이 (정렬, 구현)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요게임의 각 스테이지마다 실패율을 계산한 뒤 실패율이 높은 순서대로 스테이지 번호를 정렬하는 문제이다.실패율은 다음과 같이 정의된다.실패율 = 현재 스테이지에 도달했지만 아직 클리어하지 못한 사용자 수 / 현재 스테이지에 도달한 사용자 수실패율이 같다면 스테이지 번호가 작은 순으로 정렬해야 한다.📌 접근 방법각 스테이지에 머물러 있는 사용자 수를 카운팅 배열에 저장한다.그 후 전체 사용자 수를 기준으로 각 스테이지의 실패율을 계산한다. 현재 스테이지에서 실패한 사용자 수를 전체 도달 인원에서 제외하면서 다음 스테이지의 도달 인원을 구할 ..
프로그래머스 덧칠하기 JAVA 풀이 (그리디)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요길이가 n미터인 벽이 있고, 다시 페인트칠해야 하는 구역들이 section 배열로 주어진다.롤러의 길이는 m미터이며, 한 번 칠할 때 연속된 m개의 구역을 칠할 수 있다. 다시 칠해야 하는 모든 구역을 적어도 한 번 이상 칠할 때, 롤러를 사용하는 최소 횟수를 구하는 문제📌 접근 방법section 배열은 오름차순으로 정렬되어 있으므로 왼쪽부터 차례대로 확인한다.현재까지 칠해진 마지막 구역을 end에 저장한다. 순회 중인 구역 s가 end보다 작거나 같다면 이미 칠해진 범위 안에 있으므로 넘어간다.반대로 s가 end보다 크다면 아직 칠해..
프로그래머스 소수 만들기 JAVA 풀이 (조합, 소수 판별)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌 문제 개요정수 배열 nums에서 서로 다른 숫자 3개를 선택한다.선택한 숫자들의 합이 소수가 되는 경우의 개수를 구하는 문제이다. 예를 들어 nums = [1, 2, 3, 4]인 경우, 합이 소수인 경우는 7 하나뿐이므로 결과는 1이다1 + 2 + 3 = 61 + 2 + 4 = 71 + 3 + 4 = 82 + 3 + 4 = 9📌 접근 방법숫자 3개를 선택해야 하므로 조합을 생성한다. 중복 없이 선택하기 위해 3중 for문을 사용하고,인덱스를 i 형태로 유지하여 같은 조합이 여러 번 생성되지 않도록 한다.for (int i = 0; i 각 ..
프로그래머스 폰켓몬 JAVA 풀이 (HashSet, 자료구조)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌 문제 개요홍 박사님의 연구실에는 여러 종류의 폰켓몬이 존재한다.전체 폰켓몬 수가 N마리일 때, 정확히 N/2마리를 선택할 수 있다. 이때 최대한 다양한 종류의 폰켓몬을 선택하려고 하며, 선택 가능한 폰켓몬 종류 수의 최댓값을 구하는 문제📌 접근 방법처음에는 어떤 폰켓몬을 선택해야 하는지 조합을 구해야 할 것처럼 보인다.하지만 실제로 중요한 것은 선택한 폰켓몬의 종류 수이다. 따라서 HashSet을 이용하여 중복을 제거한 후 전체 종류 수를 구한다.이후 선택 가능한 마리 수(N / 2)와 종류 수를 비교하여 더 작은 값을 반환하면 된다.📌 핵..
프로그래머스 기사단원의 무기 JAVA 풀이 (약수, 구현)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌 문제 개요숫자나라 기사단의 기사들은 1번부터 number번까지 번호를 가진다.각 기사는 자신의 번호의 약수 개수만큼 공격력을 가진 무기를 구매한다. 다만 약수 개수가 제한 수치 limit을 초과하면, 정해진 공격력 power를 가진 무기를 구매해야 한다.무기의 공격력 1당 철 1kg이 필요하므로, 모든 기사에게 필요한 철의 총합을 구하는 문제📌 접근 방법1번 기사부터 number번 기사까지 순회한다.각 기사 번호 i에 대해 약수 개수를 구한다. 약수는 1부터 i까지 전부 확인할 필요 없이 j * j 만 확인한다.j가 i의 약수라면 j와 i /..
프로그래머스 자릿수 더하기 JAVA 풀이 (수학, 구현)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요자연수 N이 주어졌을 때 각 자릿수의 합을 구하는 문제이다.예를 들어 123이라면 이므로 6을 반환해야 한다.1 + 2 + 3 = 6또한 987이라면 24 를 반환한다.9 + 8 + 7 = 24📌 접근 방법숫자의 각 자릿수를 하나씩 꺼내어 더하면 된다.마지막 자릿수는 % 10 연산으로 구할 수 있다.n % 10구한 자릿수를 answer에 누적한다.그리고 / 10 연산을 이용해 마지막 자릿수를 제거한다.answer += n % 10;n /= 10;숫자가 0이 될 때까지 반복하면 모든 자릿수를 더할 수 있다.📌 핵심 아이디어1. % 10..
프로그래머스 PCCP 기출문제 - 저수지 물 사용량 예측(Java)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래밍 강의 | 프로그래머스 스쿨국비지원 K-디지털 기초역량훈련 코스, K-디지털 트레이닝 코스, 선배 개발자와 함께하는 라이브 교육, 데이터 사이언스, PCCP/PCCE 자격증, 세미나, 각종 프로그래밍 기초부터 실전까지 원하는 강school.programmers.co.kr 📌 문제 개요현재 저수지에 저장된 물의 양 storage 와 지난달 물 사용량 usage 가 주어진다.또한 앞으로의 월별 물 사용량 변화율이 change 배열로 제공된다. 매달 사용량을 계산하면서 누적 사용량을 구하고, 누적 사용량이 저수지 저장량을 초과하는 최초 시점을 반환해야 한다.가뭄이 끝날 때까지 물이 부족하지 않으면 -1 을 반환한다.📌 접근 방법문제를 처음 보면 단순 구현 문제처럼 보인다.반복문을 ..
프로그래머스 옹알이 JAVA 풀이(문자열, 구현)
·
코테(Solved.ac + Programmers)
📌 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요조카는 다음 네 가지 발음만 할 수 있다.ayayewooma또한 같은 발음을 연속해서 말할 수 없다.주어진 문자열 배열에서 조카가 발음할 수 있는 단어의 개수를 구하는 문제이다.가능ayayeyemawoo불가능ayaayayeyewoowoomama📌 접근 방법문자열을 하나씩 순회하면서 다음 순서로 처리했다.연속 발음 여부 확인발음 가능한 문자열 제거제거 후 남은 문자가 있는지 확인공백만 남았다면 정답 카운트 증가📌 핵심 아이디어연속 발음은 문제 조건상 허용되지 않는다.if (str.contains("ayaaya") || str.co..
프로그래머스 시험장 나누기 JAVA 풀이 (이분 탐색, DFS, 트리)
·
코테(Solved.ac + Programmers)
📌 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요여러 개의 시험장이 하나의 이진 트리 형태로 연결되어 있다.각 시험장에는 응시자 수가 존재하며, 시험장 사이의 간선을 끊어 정확히 k개의 그룹으로 나누어야 한다. 각 그룹의 응시자 수 합을 계산했을 때,가장 큰 그룹의 인원 수 를 최소화하는 것이 목표이다. 즉, 최대 그룹 인원 수의 최솟값 을 구하는 문제이다.📌 접근 방법처음에는 어떤 간선을 끊어야 하는지 직접 찾는 문제처럼 보인다.하지만 시험장 수가 최대 10,000개이므로 모든 경우를 탐색하는 것은 불가능하다. 문제를 다시 보면, 최대 그룹 인원 수를 최소화 해야 한다. 이 문구를..
프로그래머스 문자열 나누기 JAVA 풀이 (문자열, 구현)
·
코테(Solved.ac + Programmers)
📌 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌 문제 개요문자열 s가 주어졌을 때, 일정한 규칙에 따라 문자열을 여러 개로 분리하는 문제이다.먼저 현재 문자열의 첫 글자를 기준 문자 x로 잡는다. 왼쪽부터 문자를 확인하면서 x와 같은 문자의 개수와 x와 다른 문자의 개수를 각각 센다.두 개수가 처음으로 같아지는 순간 문자열을 분리한다. 남은 문자열에 대해서도 같은 과정을 반복하고, 최종적으로 분리된 문자열의 개수를 반환한다.📌 접근 방법문자열을 실제로 자르지 않고, 기준 문자와 카운트 변수만 사용해서 처리한다.현재 기준 문자를 c에 저장한다.char c = s.charAt(0);기준 문자와..