전체 글(273)
-
[Programmers] Lv2. 요격 시스템 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 기존에 작성했던 코드랑 새로 작성한 코드랑 전혀 다른 점이 없는 것 같은데, 새로 작성한 코드는 맞았습니다. 무슨 차이인 거지... 제가 푼 방식은 다음과 같습니다. 미사일들의 start 지점을 기준으로 오름차순 정렬합니다. (start 지점이 같다면, end가 작은 걸로) 현재 구간의 마지막 부분(currentEnd)이 미사일의 시작 부분과 같거나 크다면, 현재 구간에선 요격할 수 없는 미사일입니다. 따라서, 새 구간을 늘리고, 현재 미사일의 마지막 부분을 currentEnd..
2023.07.06 -
[Programmers] Lv2. 혼자서 하는 틱택토 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 3 X 3 맵에서 먼저 가로 혹은 세로 혹은 대각선 3개의 라인을 만드는 사람이 이기는 게임입니다. 하지만, 이겼는가 졌는가를 보는 것이 아니라, 올바르게 게임을 진행했는가를 보는 것이므로 다음과 같은 사항들을 체크해야 합니다. 번갈아 가면서 진행해야 하는데, 어느 한 쪽이 2번 연속 진행한 경우 ( | 'O'의 개수 - 'X'의 개수| > 1) 선공이 먼저 놔야 하는데, 후공이 먼저 놓은 경우 ( 'O'의 개수 < 'X'의 개수 ) 둘 다 이겼다고 판정할 경우 ( 'O' 3개..
2023.07.05 -
[Programmers] Lv2. 숫자 블록 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 n번째 블록에 놓여질 숫자는 n이 소수일 경우엔 1, 아닐 경우에는 10,000,000보다 작은 제일 큰 약수입니다. 제곱근 방식을 이용하여 약수와 소수를 찾는 데에 시간을 효율적으로 절약할 수 있습니다. 현재 점검하려는 숫자를 i라고 한다면, n / i \( \leq 10,000,000 \) 이라면, n / i가 가장 큰 약수가 됩니다. 가장 큰 약수를 찾았으므로 반복문을 종료합니다. 아니라면, i를 선택한 후에 다음 루프로 넘어가도록 합니다. n이 1인 경우에는 0이 적힌 ..
2023.07.04 -
[Programmers] Lv2. 두 원 사이의 정수 쌍 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 원은 상하좌우 대칭이므로, 4개의 사분면 중 하나에 속한 점들 개수만 구해서 4배 후, 겹치는 점 개수들만 빼주면 되겠다고 생각하였습니다. 저는 2사분면을 선택하여 진행하였습니다. 아래 과정은 제 2사분면 내에 점들 개수를 구한다는 가정 하에 진행한 과정들입니다. 우리는 정수 부분만 택해야 하므로, 큰 원의 y값은 내림, 작은 원의 y값은 올림 처리를 해야 합니다. [a, b] 구간의 자연수 개수를 구하는 공식은 b - a + 1입니다. (a ≤ b) 큰 원을 r1, 작은 원을..
2023.07.03 -
[Programmers] Lv2. 우박수열 정적분 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 다음 문제 지문 부분이 무슨 말인지 헷갈려, 이해하는 데에 시간이 좀 걸렸습니다. "단, 우박수열 그래프의 가로축 길이를 미리 알 수 없기 때문에 구간의 시작은 음이 아닌 정수, 구간의 끝은 양이 아닌 정수로 표현합니다. 이는 각각 꺾은선 그래프가 시작하는 점과 끝나는 점의 x좌표에 대한 상대적인 오프셋을 의미합니다." 구한 우박수열의 마지막 좌표(위 예제로 보면 (5, 1))의 x값을 LX라고 한다면, 주어진 구간 [a, b]는 [0 + a, LX + b]를 의미하는 거였습니..
2023.07.01 -
[Programmers] Lv2. 디펜스 게임 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 처음에는 DP로 무적권 스킬을 사용했을 경우와 안 했을 경우의 데이터들을 저장하여 풀어나가려고 했는데, 무적권 스킬 개수(k)와 병사들 수(n)가 같은 게 아니라서 그렇게 할 수가 없더라구요. 그래서 스택(Stack)을 이용해서 큰 숫자를 무적권 스킬로 스킵하는 형식으로 코드를 작성했었는데, 이것 역시 최적이라는 보장이 없었습니다. 방법은 우선순위 큐(Priority Queue, heap)였네요. 왜 이 생각을 못 했을까요. 방법은 간단합니다. 현재 병사 수(n)가 현재 라운드..
2023.07.01