구현 361

[PCCP 기출문제] 1번 / 붕대 감기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에서 주어진 대로 풀면 되는 간단한 구현 문제였습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 2차원 동전 뒤집기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131703 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 비트마스킹으로 풀 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 첨부하는 그림에서 볼 수 있다시피 beginning을 target으로 바꾸기 위해 뒤집을 열과 행을 정하는 것이 중요하지 뒤집는 순서는 중요하지 않습니다. 2. 열과 행의 길이가 각각 최대 10이기 때문에 모든 경우의 수를 구해도 O(2^20 * 20)입니다. 따라서 모든 경우의 수를 테스트한 뒤 답을 ..

[Programmers] 두 원 사이의 정수 쌍

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/181187 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 수학적인 사고능력이 필요한 문제였습니다. 알고리즘은 아래와 같습니다. 1. 원은 상하좌우 대칭이므로 (1 사분면 내 조건에 맞는 좌표들의 개수) * 4를 하면 정답이 나옵니다. 2. 따라서 [1, r2] 구간의 좌표들을 구하는데 이때 r1, r2, 그리고 x의 값이 연산 중 int 범위를 초과하며 오버플로우가 발생할 수 있으므로 x * 1LL * x와 같이 처리하여 int 범위..

[Programmers] 과제 진행하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 스택을 이용한 시뮬레이션 구현 문제였습니다. 알고리즘은 아래와 같습니다. 1. 시작 시간을 쉽게 비교하기 위해 시작 시간을 분 단위로 전처리하고 map 자료구조를 통해 해당 시작 시간에 매칭되는 과제를 매핑합니다. 1.1 이때 가장 빠른 시작 시간도 구해줍니다. 2. 가장 먼저 진행해야 할 과제부터 순차적으로 진행하는데 문제에서 주어진 조건대로 해당 과제를 마무리하기 전 새로운..

[Programmers] 연속된 부분 수열의 합

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 투 포인터 알고리즘으로 푼 문제였습니다. 알고리즘은 아래와 같습니다. 1. start와 end는 부분 수열의 시작과 끝을 가리키는 인덱스 값을 저장하는 변수이며 [0, 0] 범위부터 시작합니다. 2. 현재 부분 수열의 합이 k보다 작을 경우 범위를 더 넓혀야 하므로 end를 1 증가시킵니다. 2.1. 현재 부분 수열의 합이 k와 같다면 문제 조건에 따라 두 가지 케이스로 구분해..

[Programmers] 요격 시스템

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위 그림을 보자마자 회의실 예약 문제가 떠올랐는데 비슷하게 풀면 되는 문제였습니다. 알고리즘은 아래와 같습니다. 1. targets를 개구간의 e 기준으로 오름차순 정렬을 진행합니다. 2. 처음 폭격 미사일에 요격 미사일을 발사하고 요격시킨 미사일의 개구간 e를 prevEnd에 저장합니다. 2.1 이후 폭격 미사일들을 순회하면서 prevEnd가 해당 미사일의 개구간 내에 있으면..

[Programmers] 광물 캐기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 그리디 하게 접근한 문제입니다. 알고리즘은 아래와 같습니다. 1. 5개씩 구간을 끊고 다이아몬드, 철, 그리고 돌의 개수를 기록한 ore 구조체에 기록합니다. 2. 각 구간을 최소한의 피로도로 캐야 하므로 상위 광물이 많은 순서대로 성능이 좋은 곡괭이를 쓸 수 있도록 정렬을 했습니다. 2.1 즉, 다이아몬드가 많은 구간 > 다이아몬드 개수가 같다면 철이 많은 구간 > 다이아몬드..

[Programmers] 정수를 나선형으로 배치하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 비록 레벨 0이지만 정답률이 50%가 안 되어 풀이를 남깁니다. 규칙만 파악한다면 쉽게 풀 수 있는 문제였습니다. 규칙은 아래와 같습니다. 1. (0, 0)을 포함하여 오른쪽으로 n칸을 채웁니다. 2. n을 1 감소시키고 아래 방향과 왼쪽 방향으로 n칸씩 채웁니다. 3. n을 1 감소시키고 위 방향과 오른쪽 방향으로 n칸씩 채웁니다. 4. n이 1이 될 때까지 2, 3번을 반복..

[Programmers] 혼자서 하는 틱텍토

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/160585# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아래와 같은 조건을 확인해야 합니다. 1. O와 X의 개수 2. O가 이겼을 때는 O가 X보다 1개 많음 3. X가 이겼을 때는 X가 O와 똑같음 주의: 아래와 같은 경우도 정상 케이스입니다. ["OOO"] ["XOX"] ["OXX"] O가 (0, 2)에 마지막으로 배치하면 O가 두 줄이지만 정상 케이스입니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합..

[Programmers] 혼자 놀기의 달인

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 지문대로 풀면 되는 문제였습니다. 알고리즘은 아래와 같습니다. 1. cards 벡터를 순회하며 상자 그룹의 그룹원 수를 boxCnts 벡터에 추가해 줍니다. 1.1 구성원이 0일 경우 추가하지 않습니다. 2. 상자 그룹이 두 개 미만일 경우 0을 반환합니다. 3. 상자 그룹이 두 개 이상일 경우에는 정렬을 한 뒤 [ 최대 구성원을 가진 그룹원의 수 * 그다음 많은 구성원을..