Coding Test/Programmers(62)
-
[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 -
[Programmers] Lv2. 택배상자 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제에서 스택(Stack) 쓰라고 대놓고 제시해줘서, 스택 썼습니다. 다만, order 길이가 백만 개라 시간 초과가 날까 걱정했는데 안 나더라구요. 아무래도 실을 수 없는 경우가 생기기에 백만 개를 다 보지 않아서 그런가 봅니다. 저는 다음 순서를 통해 코드를 작성하였습니다. 현재 택배 상자 번호 == order[i]라면, answer + 1을 해줍니다. 현재 택배 상자 번호 < order[i]라면, order[i] - 1까지 스택에 넣어주고 answer + 1을 해줍니다. ..
2023.06.26 -
[Programmers] Lv2. 가장 큰 수 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 별 거 아닌 문제라고 생각했는데, 생각보다 오래 걸려 버렸네요... 주어진 숫자를 문자열에 담아, 3배만큼 키운 후 비교해주었습니다. 예를 들어, // 한 자리 숫자일 경우 "5" -> "555" // 두 자리 숫자일 경우 "45" -> "454545" // ... 3배로 해주는 이유는 최소 자릿수가 한 자리이기 때문이죠. 4배를 해주게 되면, 입력 데이터 범위 최댓값인 1000을 넘어가게 됩니다. 아무튼, 변환을 완료했으니, 다음 기준에 따라 정렬해주면 됩니다. 맨 앞 자리부..
2023.06.26