Coding Test(125)
-
[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 -
[Programmers] Lv2. [3차] 파일명 정렬 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 File 클래스를 만들어줍니다. File 클래스엔 id(int), originalName(string), head(string), number(string), tail(string) 멤버 변수가 있습니다. id 값은 문제 입력으로 주어지는 files 배열의 인덱스 순서입니다. head와 number가 같을 때, 정렬 기준으로 사용됩니다. 생성자에서 원본 문자열을 head, number, tail로 잘 분리하여 저장하도록 합니다. < 연산자 오버로딩을 해줍니다. BST 자료구조인..
2023.06.24 -
[Programmers] Lv2. 방문 길이 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 어려운 구현 문제가 아닌데, 점이 아닌 선분(line) 처리가 까다로운 문제였네요. 선분은 두 개의 점(Point)으로 이루어져 있으니, map을 통해 을 관리하였습니다. 끝 점들이라고 표현해놨는데, 플레이어가 한 번에 움직일 수 있는 최대 칸수는 1칸이므로, 점 하나당 가질 수 있는 선분의 종류는 4가지(상, 하, 좌, 우)입니다. 제가 구현한 로직을 시나리오대로 한번 보도록 하죠. "UUDL"을 한 번 예시로 보겠습니다. 1. [U] 출발지(0, 0)에서 한 칸 위로 올라가..
2023.06.24