본문 바로가기

728x90

구현

[프로그래머] (2024 KAKAO WINTER INTERNSHIP) 도넛과 막대 그래프 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/258711 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 오직 간선들로만 주어진 값들을 이용해 3가지 그래프의 개수와 그래프에 포함되지 않는 노드 하나를 구하는 문제입니다. 처음 문제를 보았을 때 그래프를 순환으로 확인해야 하나 고민이 많았지만 생각의 방법을 바꾸어 찾아야 하는 것들의 특징들을 이용했습니다. 찾아야하는 요소는 총 4개 생성한 정점의 번호, 도넛모양그래프의 수, 막대모양 그래프의 수, 8자모양 그래프의 수입니다. 1. 생성한 .. 더보기
[프로그래머스] PCCP 기출문제 3번 (아날로그 시계) / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/250135?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 시침, 분침과 초침이 만나는 횟수를 구하는 문제입니다. 특정 범위의 시간을 구하기 까다로워 단순하게 만들기 위해 00시 00분 00초에서 시작 시간과 끝 시간의 횟수를 구해 그 차이를 구하는 것으로 변형하여 해결하였습니다. 각 시간을 구하는데에는 1. 시침이 해당 시점까지 몇번 초침과 만났는가 2. 분침이 해당 시점까지 몇번 초침과 만났는가 3. 해당 시점에 .. 더보기
[프로그래머스] PCCP 기출문제 1번 (붕대 감기) / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 매 초마다 몬스터가 공격을 하는 여부를 판단하며 문제를 해결할 수 있지만 붕대의 회복은 1초에 계속되며 특정한 주기별로 한번씩 추가 회복이 된다는 점을 생각하면 결국 계산이 필요한 시점은 몬스터에게 공격당하는 시점 뿐입니다. 따라서 몬스터의 공격이 담긴 배열을 기준으로 for문을 돌리며 문제 내용을 구현하여 해결할 수 있었습니다. 1. 지금까지 회복된 양을 반영하기 2. 몬스터에게 공.. 더보기
[백준] 17143 낚시왕 / 자바(Java) 문제 https://www.acmicpc.net/problem/17143 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. www.acmicpc.net 해설 상어 객체를 만들어 낚시왕이 상어를 잡는 부분에는 상어배열을, 상어가 이동하는 부분에는 상어 큐를 사용해서 해결하였습니다. 상어의 이동 부분에 상어 큐를 사용한 이유는 상어의 이동들은 모두 동시에 이동하기 때문에 큐로 상어 객체이 이동된 이후의 값을 추가하며 넣고 배열에 다시 넣으며 상어끼리 먹는 구간을 구현했습니다. 코드 import java.io.BufferedR.. 더보기
[백준] 17144 미세먼지 안녕! / 자바(Java) 문제 https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 해설 2차원배열에서의 탐색을 구현하는 문제입니다. 크게 2단계로 이루어져 있으며 미세먼지가 확산되는 단계와 공기가 순환하는 단계가 있습니다. 1단계 : 미세먼지 확산 확산의 규칙 1. 인접한 네 방향으로 확산하되 벽과 공기청정기로는 확산되지 않는다. 2. 확산된 곳에는 (본래의 값/5) 의 값만큼 먼지가 추가된다(소수점자리는 이산수학으로 / 사용시 제거된다) 3. 본래의 위치에는 (본래의 .. 더보기
[백준] 2239 스도쿠 / 자바(Java) 문제 https://www.acmicpc.net/problem/2239 2239번: 스도쿠 스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 예를 들어 다 www.acmicpc.net 해설 스도쿠를 해본 분이라면 상상만 했던 스도쿠를 자동으로 푸는 코드를 짜는 문제입니다. 구현문제로 큰 어려움 없이 필요한 동작들을 순서대로 실행하면 가능합니다. 1. 빈칸들을 확인하기 2. 빈칸에 들어갈 수 있는 수를 하나씩 넣어보기 3. 다음 빈칸을 확인하기 4. 2와3을 반복하며 모든 빈칸에 옳은 값을 넣은 경우 반복종료 사람과는 달리 컴퓨터는 예측이 아닌 모든 수를 넣고 가능한 .. 더보기
[백준] 3190 뱀 / 자바(Java) 문제 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 해설 2차원 배열에서의 구현을 4방탐색을 통해 해결하는 문제입니다. 조건들을 주의해서 확인해야합니다. 뱀의 회전 시간 및 여부는 입력이 정렬된 상태로 주어져 올바른 시간에 맞추어 진행하다 한번씩 꺽어주면 됩니다. 새로 진행할 부분의 위치를 head배열에 저장하고 진행시 사과가 없어 꼬리가 당겨져 몸이 지워질 부분을 tail배열에 저장합니다. head의 값은 회전 및 전진하며 자신이나 벽과 닿은 경우.. 더보기
[프로그래머스] 주차 요금 계산 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 차량별 주차요금을 차량번호가 작은 순으로 출력하는 문제입니다. 문제의 조건을 잘 보고 사용가능한 자료구조와 분기를 파악하여 구현하면 해결가능합니다. 1. 데이터 정리 문제의 조건을 읽어보면 차량을 총 주차시간을 기준으로 요금을 측정하기 때문에 입력 데이터를 가공하기 쉽도록 String값을 Int배열로 바꾸고 차량번호순 오름차순으로 정렬, 같다면 시간 순으로 정렬하여 값을 변경했습니다. .. 더보기

728x90