프로그래머스 바탕화면 정리 JAVA 풀이|최소 드래그 영역 구하기
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요문자열 배열 wallpaper에는 컴퓨터 바탕화면의 상태가 담겨 있습니다..: 빈칸#: 파일이 있는 칸바탕화면에 존재하는 모든 파일을 한 번의 드래그로 선택해야 합니다.드래그의 시작점은 왼쪽 위 좌표 (lux, luy), 끝점은 오른쪽 아래 좌표 (rdx, rdy)이며 다음과 같은 배열을 반환해야 합니다.[lux, luy, rdx, rdy]모든 파일을 포함하면서 드래그 이동거리가 가장 짧은 직사각형의 좌표를 구하는 문제입니다.📌 접근 방법모든 파일을 포함하는 가장 작은 직사각형을 찾으면 됩니다.이를 위해 파일이 있는 모든 위치를 확인하..
프로그래머스 크레인 인형뽑기 게임 JAVA 풀이 (2019 카카오 개발자 겨울 인턴십)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요크레인을 좌우로 이동시키며 선택한 열의 가장 위에 있는 인형을 뽑아 바구니에 담습니다.바구니에 같은 모양의 인형이 연속해서 들어오면 두 인형이 터지며 사라집니다. 모든 크레인 동작이 끝난 뒤 사라진 인형의 개수를 반환하는 문제입니다.📌 접근 방법이 문제는 시뮬레이션과 Stack을 함께 사용하는 대표적인 문제입니다.moves를 순회하며 크레인이 이동할 열을 선택합니다.해당 열을 위에서 아래로 탐색하여 가장 먼저 발견되는 인형을 찾습니다.인형을 꺼낸 뒤 해당 위치를 0으로 변경합니다.바구니(Stack)의 가장 위 인형과 비교합니다.같으면 ..
프로그래머스 택배 상자 꺼내기 JAVA 풀이 (2025 코드 챌린지)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요창고에 택배 상자를 지그재그(좌→우, 우→좌 반복) 형태로 쌓는다.꺼내려는 상자가 주어졌을 때 해당 상자를 포함하여 총 몇 개의 상자를 꺼내야 하는지 구하는 문제이다. 예를 들어 같은 열에 위쪽에 있는 상자가 있다면 그 상자부터 먼저 꺼내야 한다.📌 접근 방법이 문제의 핵심은 상자의 번호를 2차원 좌표(row, column)로 변환하는 것이다.상자의 행(row)과 열(column)을 계산한다.홀수 행은 역방향으로 배치되므로 실제 열 위치를 변환한다.현재 상자와 같은 열에 있는 위쪽 상자들을 찾는다.마지막 행은 상자가 부족할 수 있으므로..
프로그래머스 체육복 JAVA 풀이 (그리디, 구현)
·
코테(Solved.ac + Programmers)
🔗 문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr📌 문제 개요점심시간에 일부 학생이 체육복을 도난당했다.여벌 체육복을 가진 학생은 자신의 앞번호 또는 뒷번호 학생에게만 체육복을 빌려줄 수 있다.최대한 많은 학생이 체육수업에 참여할 수 있도록 체육복을 빌려주는 문제이다.📌 접근 방법학생마다 체육복의 개수를 저장하는 배열을 생성하였다.초기에는 모든 학생이 체육복을 1벌 가지고 있다고 가정한 뒤,도난당한 학생은 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📌 문제 개요햄버거 재료가 순서대로 전달된다.재료는 아래에서부터 차곡차곡 쌓이며 빵(1) → 야채(2) → 고기(3) → 빵(1) 순서가 완성되면 햄버거 하나를 포장한다. 포장된 재료는 즉시 제거되며, 남아있는 재료들로 다시 햄버거가 만들어질 수도 있다.최종적으로 포장한 햄버거의 개수를 반환하는 문제이다.📌 접근 방법재료를 순서대로 확인하면서 스택에 저장한다.새로운 재료가 들어올 때마다 스택의 마지막 4개의 재료가 1, 2, 3, 1인지 확인한다.햄버거가 완성되었다면 마지막 4개의 재료를 제거하고 햄버거 개수를 증가시킨다. 입력 크기가 최대 100..
프로그래머스 실패율 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 각 ..