Coding Test(125)
-
[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 -
[Programmers] Lv2. 문자열 압축 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제에서 주어진 내용대로 구현하면 시간 초과나지 않을까 했는데, 통과되었네요. 문제가 그리 어렵진 않았습니다. 브루트 포스로 풀어도 될 것 같습니다. ✏️소스 코드 및 결과 #include using namespace std; int solution(string s) { int answer = 10000; int extractNum = 1; while (extractNum
2023.06.30 -
[Programmers] Lv2. 행렬 테두리 회전하기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 행렬 크기가 최대 \( 10000 \times 10000 \)이라서 시간 초과가 나지 않을까 걱정했는데, 다행히 통과했습니다. 문제 자체는 어렵지 않네요. 그냥 문제에서 말하는대로 구현하기만 하면 됩니다. 근데, 익숙치가 않아서 시간이 좀 오래 걸렸네요. rows \( \times \) columns 크기의 2차원 배열 만들고, 값 초기화하기 주어진 query에 대해 테두리 회전하기 저는 값을 스왑하는 방식으로 진행했습니다. 시계 방향 회전이니, 위 \( \rightarrow ..
2023.06.28 -
[Programmers] Lv2. 연속된 부분 수열의 합 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 입력 데이터 크기가 1,000,000개이니 당연히 \( O(n^2) \)으로는 못 풉니다. 즉, 이중 반복문으로는 어렵겠다고 생각하였습니다. 그래서 저는 두 개의 인덱스 변수를 통해, 반복문을 한 번만 돌도록 풀이를 구상하였습니다. 시작 인덱스(startIdx), 끝 인덱스(lastIdx), 합계 변수(sum)를 모두 0으로 초기화하여 선언합니다. startIdx = k라면, sum -= sequnece[startIdx++] 위와 같이 조건문들을 지정하여 반복해줍니다. 반복문이..
2023.06.27 -
[Programmers] Lv2. 큰 수 만들기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 처음에는 너무 쉬운데? 하면서 내림차순으로 정렬 후 뒤의 숫자 k개를 제거하는 방식으로 풀었으나, 문제를 제가 잘못 이해했더라구요. 기존에 주어지는 number 수들은 기존 위치를 지켜야 했습니다. 예제 2번의 "1231234"를 예시로 들면, // 제거할 숫자에 '|'표시 || | "1231234" -> "3234" 결과로 나온 "3234"는 기존과 같이 똑같은 순서를 유지하고 있다는 겁니다. 이런 방식으로 풀어야 했네요. 그래서 저는 스택(Stack)을 이용해서 제거하고 남..
2023.06.27