C++ 1588

[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/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 우선순위 큐를 이용한 BFS 문제였습니다. 알고리즘은 아래와 같습니다. 1. 이동한 횟수가 적을수록 우선순위가 큰 우선순위 큐에 로봇의 시작점 좌표와 이동한 횟수인 0을 넣어줍니다. 2. 우선순위 큐가 빌 때까지 혹은 목표점에 도달할 때까지 상하좌우 방향으로 부딪힐 때까지 이동시키며 시뮬레이션을 돌립니다. 2.1 목표점에 도달했다면 이동한 횟수를 반환합니다. 3. 2번 과정에서..

[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. 상자 그룹이 두 개 이상일 경우에는 정렬을 한 뒤 [ 최대 구성원을 가진 그룹원의 수 * 그다음 많은 구성원을..

[Programmers] 미로 탈출

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 시작점에서 우선 레버로 가는 로직을 작성한 뒤 레버에서 도착점으로 가는 로직을 작성하면 쉽게 풀 수 있는 문제였습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~