Lv2(51)
-
[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 -
[Programmers] Lv2. 게임 맵 최단거리 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 전형적인 BFS 문제인 것 같습니다. 제한사항들도 비교적 쉬운 편이라 어렵지 않게 구현할 수 있었습니다. ✏️소스 코드 및 결과 #include #include using namespace std; using Position = pair; using Matrix = vector; vector directions { {-1, 0}, { 1, 0 }, { 0, -1 }, { 0, 1 } }; // 상, 하, 좌, 우 int FindEnemyCampWithMinCount(Matrix..
2023.06.22 -
[Programmers] Lv2. 주식가격 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 문제 지문의 설명이 너무 전달력 없이 작성되어 있어, 다른 분이 재해석하신 글을 참고하였습니다. 저는 스택(Stack)을 이용하여 풀었습니다. prices의 크기만큼 answer 배열에 메모리 공간을 할당해둔다. 스택에 저장되는 데이터는 이다. for문을 통해, 1초부터 prices 크기까지 초를 세며 진행한다. 스택이 비었거나, 현재 주가가 스택 top()의 주가보다 크다면 현재 주가와 시간을 스택에 삽입한다. 위 조건에 해당하지 않는다면, 주가가 낮아진 것이므로 스택에서 현..
2023.06.22 -
[Programmers] Lv2. 땅따먹기 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 입력으로 주어지는 배열 크기가 최대 \( 100,000 \times 4 \) 이기 때문에 DFS으로는 시간 초과가 걸릴 것 같더라구요. 유망하지 않은 부분은 가치지기를 하면 시간을 줄일 수 있겠지만, 기준을 어찌해야 할 지 모르겠었습니다. 그리디(Greedy)로도 현재 선택지가 최선의 선택지라는 보장이 없기에 못 사용하구요. 그래서 동적 프로그래밍(Dynamic Programming)을 한 번 사용해 봤습니다. 땅(land)의 첫 행은 dp에 그대로 저장해둔다. 현재 행과 열을..
2023.06.22 -
[Programmers] Lv2. 오픈채팅방 | C++
🔗문제 보러가기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👨💻풀이 과정 입력 데이터 개수가 최대 10만 개이기에 검색을 빠르게 하기 위해, 해시(Hash)를 사용했습니다. 구현하는 부분이 조금 길 뿐, 문제 자체는 어렵지 않았습니다. for문으로 record를 순회하면서, 객체를 생성하여 해시에 저장합니다. 다시 for문으로 record를 순회하며, 각 명령어(Enter, Leave, Change)에 해당하는 기능을 수행해주면 됩니다. ✏️소스 코드 및 결과 #include #include #include #include using namespac..
2023.06.21