티스토리 뷰
요즘 들어 프로그래머스 알고리즘 코딩문제를 계속 풀고있습니다. 지난주에는 1단계 문제를 전부 풀어보았고, 이번주부터는 2단계 문제를 풀어보고 있습니다.
2단계도 기초수준의 문제위주라곤 하지만 아직 많은 고민과 시행착오가 있어 30%정도는 구글링 힌트를 얻고나서야 풀게된 문제도 있어 복습도 많이 필요할 것 같습니다. 저는 제 본업과 별개로 알고리즘고수가 되어서 남들에게 알고리즘을 가르쳐줄 정도가 되고싶습니다.
그래도 확실히 문제를 풀면 풀수록 그림도 그려지고, 문제를 뭐로풀어야할 지 갈피가 잡히기도 합니다. 최근엔 스택/큐 알고리즘 문제를 몇개 해결했는데 첫번째로 "기능개발" 스택/큐 문제를 풀었습니다. 이 문제는 queue<pair<xxx,xxx>> q를 통해 가볍게 풀 수 있었습니다. 문제를 하나씩 풀다보면 한번은 꼭 실수가 있어 틀리곤 하는데 한번에 성공해서 되게 기분 좋았어요. 이 외에도 map, priority_queue, stack, vector등 다양한 타입을 사용해서 문제를 풀어볼 수 있어서 좋은 것 같습니다.
하나 아쉬운건 실제 테스트케이스 평가대상의 입출력 값을 알 수 없어서 채점에 통과하지 못할 경우 반례찾는데도 시간이 들곤 하는것입니다.
이 문제, "올바른 괄호" 알고리즘 코딩 문제는 "기능개발" 보다 3배는 쉬웠던것 같습니다.
'()())))()'같은 입력값을 인덱스로 순회하면서 스택에 '('를 쌓았다가 ')'가 나왔을때 스택에 '('를 하나씩 pop() 시키고, 만약 이때 stack.empty()가 true라면, false를 답으로 + 순회를 마쳤는데 stack에 '('이 남아있다면 false를 답으로, 스택이 비어있으면 true를 반환하도록 하니 정답처리가 되었습니다.
"탑" 문제는 입력받은 탑들의 정보와 순서를 참고하여 문제설명 조건에 맞는 수신탑을 답으로 내놓는 문제였습니다.
이 문제는 제대로된 이해를 위해 그림을 그려가면서 했는데요. 입력값의 맨 뒷 값부터 2중for문으로 순회하면서 수신을 받을 수 있는 탑이 있다면 그 탑의 번호값을 차례대로 stack에 저장했습니다. queue<pair<int,int>>를 사용할줄 알았는데, for문 내 지역변수만으로도 커버가 되어서 더욱 복잡하게 스택/큐를 사용하며 갈 필요는 없었습니다. 이 문제도 다 풀고나니 생각보단 가벼운 문제였습니다. "올바른괄호" 문제가 제일 쉬웠네요.
개인적으로 볼때 프로그래머스 알고리즘 2단계 코딩문제사이에도 많은 난이도 편차가 보였습니다. @_@;;
알고리즘 문제풀이의 재미를 좀더 어렸을때 알았더라면 하는 아쉬움도 있지만 지금부터라도 꾸준히 풀어가며, 점점 더 어려운 알고리즘까지 마스터 해봐야겠습니다. 오늘은 그냥 일기장 쓰듯 제가 프로그래머스 풀다가 드는 생각, 푼 문제(스택/큐 알고리즘 문제)들에 대한 간략한 풀이과정, 후기를 말해봤습니다. 모두들 즐코딩하세요 ^-^//
'알고리즘 정보 > C++ 알고리즘' 카테고리의 다른 글
우선순위큐 MaxHeap 프린터 힙 알고리즘문제 풀이 (0) | 2019.05.16 |
---|---|
라면공장 알고리즘 힙문제풀이, 섬머코딩 후기 (0) | 2019.05.15 |
프로그래머스 탐욕법 알고리즘, 체육복 문제풀이 (2) | 2019.05.06 |
프로그래머스 알고리즘문제 1단계 전부해결, 2단계 도전! (0) | 2019.05.02 |
프로그래머스 C++언어 알고리즘 문제풀이 입문했다 (2) | 2019.04.30 |
- Total
- Today
- Yesterday
- 프로그래머스swift
- uikit
- Protocol
- 알고리즘
- createML
- Collection
- swift문제
- ios
- swift
- 개발자문서
- 프로토콜
- CoreML
- 김프매매
- 백준swift
- swift 기초
- publisher
- 프로그래머스
- swift언어
- swift string
- swift reduce
- 알고리즘문제
- 자연어처리
- 컬렉션
- 스위프트
- 부스트코스
- swift알고리즘
- 백준알고리즘
- swift 문자열
- Swift 알고리즘
- SwiftUI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |