프로그래머스 다트 게임 JAVA 풀이
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요다트 게임 결과 문자열이 주어졌을 때, 총 3번의 기회에서 얻은 점수의 합을 구하는 문제이다.각 점수는 0부터 10까지이며, 점수 뒤에는 보너스 영역인 S, D, T가 붙는다.보너스에 따라 점수는 각각 1제곱, 2제곱, 3제곱으로 계산된다. 또한 옵션으로 * 또는 #이 붙을 수 있다.*은 현재 점수와 이전 점수를 2배로 만들고, #은 현재 점수를 음수로 만든다.📌 접근 방법문자열을 왼쪽부터 순회하면서 점수, 보너스, 옵션을 차례대로 처리한다.각 회차별 점수를 저장하기 위해 크기가 3인 배열을 사용한다. 숫자를 만나면 점수를 구하고, 바..
프로그래머스 PCCE 기출문제 10번 데이터 분석 JAVA 풀이 (구현, 정렬)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌 문제 개요데이터는 [code, date, maximum, remain] 형태의 2차원 배열로 주어진다.주어진 조건(ext 을 만족하는 데이터만 추출한 뒤,sort_by에 해당하는 값을 기준으로 오름차순 정렬하여 반환하는 문제이다.📌 접근 방법문자열(code, date, maximum, remain)을 그대로 비교하기보다는 배열의 인덱스로 변환하여 처리했다.먼저 getIndex() 메서드로 ext와 sort_by를 각각 인덱스로 변환한 뒤, 조건에 맞는 데이터만 ArrayList에 저장했다. 이후 Comparator.comparingInt()를..
프로그래머스 체육복 JAVA 풀이 (그리디, 구현)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요점심시간에 일부 학생이 체육복을 도난당했다.여벌 체육복을 가진 학생은 자신의 앞번호 또는 뒷번호 학생에게만 체육복을 빌려줄 수 있다.최대한 많은 학생이 체육수업에 참여할 수 있도록 체육복을 빌려주는 문제이다.📌 접근 방법학생마다 체육복의 개수를 저장하는 배열을 생성하였다.초기에는 모든 학생이 체육복을 1벌 가지고 있다고 가정한 뒤,도난당한 학생은 1벌을 차감하고 여벌이 있는 학생은 1벌을 추가하였다. 이후 체육복이 없는 학생을 순서대로 확인하면서 앞 학생에게 먼저 빌릴 수 있는지 확인하고,불가능하면 뒤 학생에게 빌려주는 그리디 방식으로..
프로그래머스 완주하지 못한 선수 JAVA 풀이 (HashMap, 해시)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요마라톤 참가자 명단(participant)과 완주자 명단(completion)이 주어진다.완주자 명단은 참가자보다 한 명 적으며, 완주하지 못한 선수의 이름을 반환하는 문제이다. 참가자 중에는 동명이인이 존재할 수 있기 때문에 단순 비교만으로는 해결할 수 없다.📌 접근 방법이 문제는 이름의 등장 횟수를 관리하는 것이 핵심이다.HashMap를 사용하여 참가자의 이름을 Key, 등장 횟수를 Value로 저장한다. 이후 완주자를 순회하면서 해당 이름의 개수를 1씩 감소시키면, 마지막에는 완주하지 못한 선수만 값이 1로 남게 된다.마지막으로 ..
프로그래머스 분수의 덧셈 JAVA 풀이 (수학, 구현, 유클리드 호제법)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요두 개의 분수가 주어질 때, 두 분수를 더한 뒤 기약분수 형태로 반환하는 문제입니다.분수를 더하기 위해서는 먼저 통분을 해야 하며, 계산된 결과를 최대공약수(GCD) 로 나누어 기약분수로 만들어야 합니다.예를 들어,1/2 + 3/4 = 5/49/2 + 1/3 = 29/6📌 접근 방법분수의 덧셈은 먼저 분모를 같게 만들어야 합니다.두 분모를 곱하여 공통 분모를 만들고, 새로운 분자는 다음과 같이 계산합니다.분자 = numer1 × denom2 + numer2 × denom1분모 = denom1 × denom2이후 계산된 분자와 분모의 최..
프로그래머스 로또의 최고 순위와 최저 순위 JAVA 풀이 (완전탐색, 구현)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요로또 번호 6개와 당첨 번호 6개가 주어진다.구매한 로또 번호 중 0은 알아볼 수 없는 번호를 의미하며, 어떤 번호로도 변경될 수 있다. 이를 이용하여 당첨 가능한 최고 순위와 최저 순위를 배열로 반환하는 문제이다.📌 접근 방법로또 번호를 한 번 순회하면서 0의 개수와 당첨 번호와 일치하는 개수를 각각 계산한다.0은 어떤 번호든 될 수 있으므로 최고 순위는 일치 개수 + 0의 개수이다.최저 순위는 현재 일치한 개수 그대로 계산한다.순위 계산은 별도의 메서드로 분리하여 처리하였다.📌 핵심 아이디어1. 0의 개수와 일치 개수를 동시에 계..
프로그래머스 동영상 재생기 JAVA 풀이 (구현, 시뮬레이션)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요동영상의 현재 재생 위치에서 prev, next 명령을 수행하는 문제이다.prev는 현재 위치에서 10초 전으로 이동한다.next는 현재 위치에서 10초 후로 이동한다.현재 위치가 오프닝 구간(op_start ~ op_end)에 포함되면 자동으로 오프닝 종료 시점(op_end)으로 이동한다.모든 명령을 수행한 뒤 최종 재생 위치를 "mm:ss" 형식으로 반환하면 된다.📌 접근 방법문자열 형태의 시간을 직접 계산하면 복잡해지므로 모든 시간을 초(second) 단위로 변환하여 처리한다.먼저 시작 위치가 오프닝 구간인지 확인하고 필요하면 오..
프로그래머스 햄버거 만들기 JAVA 풀이 (스택, 구현)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요햄버거 재료가 순서대로 전달된다.재료는 아래에서부터 차곡차곡 쌓이며 빵(1) → 야채(2) → 고기(3) → 빵(1) 순서가 완성되면 햄버거 하나를 포장한다. 포장된 재료는 즉시 제거되며, 남아있는 재료들로 다시 햄버거가 만들어질 수도 있다.최종적으로 포장한 햄버거의 개수를 반환하는 문제이다.📌 접근 방법재료를 순서대로 확인하면서 스택에 저장한다.새로운 재료가 들어올 때마다 스택의 마지막 4개의 재료가 1, 2, 3, 1인지 확인한다.햄버거가 완성되었다면 마지막 4개의 재료를 제거하고 햄버거 개수를 증가시킨다. 입력 크기가 최대 100..
프로그래머스 대충 만든 자판 JAVA 풀이 (HashMap, 구현)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요휴대폰 자판에서 각 문자를 입력하기 위해 필요한 최소 입력 횟수를 구한 뒤, targets의 각 문자열을 입력하기 위한 최소 버튼 입력 횟수를 구하는 문제이다. 같은 문자가 여러 키에 존재하거나 같은 키에 여러 번 등장할 수 있으므로, 항상 가장 적게 눌러 입력할 수 있는 횟수를 사용해야 한다.또한 자판에 존재하지 않는 문자가 포함되어 있다면 해당 문자열은 입력할 수 없으므로 -1을 반환한다.📌 접근 방법먼저 keymap을 순회하며 문자별 최소 입력 횟수를 HashMap에 저장한다.이후 targets를 순회하면서 각 문자의 입력 횟수를..
프로그래머스 정수를 나선형으로 배치하기 JAVA 풀이 (구현, 시뮬레이션)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요n × n 크기의 배열에 1부터 n²까지의 숫자를 시계 방향의 나선형으로 채우는 문제이다.배열의 시작 위치는 (0, 0)이며, 오른쪽으로 이동하다가 더 이상 진행할 수 없으면 아래, 왼쪽, 위 순서로 방향을 변경하며 모든 칸을 채운다.📌 접근 방법현재 위치와 방향을 관리하면서 1부터 n²까지 순서대로 배열에 저장한다.다음 이동할 좌표를 미리 계산한 뒤, 배열 범위를 벗어나거나 이미 방문한 칸이라면 방향을 시계방향으로 변경한다. 방향이 변경되면 새로운 방향으로 다음 좌표를 다시 계산한 후 이동을 반복한다.📌 핵심 아이디어1. 방향 배열..