Coding Test/Programmers(62)
-
[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 -
[Programmers] Lv2. 테이블 해시 함수 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 단순 구현 문제입니다. 별 거 없습니다. 진짜 문제에서 제시한 순서대로 구현하기만 하면 돼요... 아래 코드 첨부하겠습니다! ✏️소스 코드 및 결과 #include #include using namespace std; int column; bool Compare(const vector& tuple1, const vector& tuple2) { if (tuple1[column - 1] == tuple2[column - 1]) return tuple1[0] > tuple2[0]; ..
2023.07.01