Lv2(51)
-
[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 -
[Programmers] Lv2. 다리를 지나는 트럭 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 큐(Queue)를 통해 다리 위에 있는 트럭들을 관리합니다. 트럭이 가지는 정보는 다리 진입 시각(enterTime)과 트럭 무게(weight)입니다. struct Truck { Truck(int enterTime, int weight) : _enterTime(enterTime), _weight(weight) { } int _enterTime; int _weight; }; 경과 시간(elapsedTime), 다리 위 트럭들의 총 무게 합(weightSum)도 같이 관리하며, 이..
2023.06.25 -
[Programmers] Lv2. [1차] 프렌즈4블록 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 이 문제를 풀면서 새로운 교훈을 얻었습니다. 네.... "실력도 없는데, 되지도 않는 방법은 적용하지 말자." [첫 시도] 실패 처음 구상한 방법으로는 각 열의 루트(Root) 블록 배열을 통해 상하좌우 연결리스트로 관리하는 방법이었습니다. 시각적으로 표현하자면, 대강 다음과 같습니다. /* - 블록은 'O'로 표기 - '-'과 '|'은 연결 링크를 뜻함 - []은 배열을 뜻함 */ [O] [O] [O] [O] [O] | | | | | O - O - O - O - O | | |..
2023.06.24