티스토리 뷰
이 글에서는 프로그래머스 - 탑 문제에 대해 다뤄보겠습니다. 문제 풀이는 C++로 이루어져 있고 함께 들어가 있는 개념들도 간단히 정리 해보는 형식으로 작성되었으므로 오타등의 오류가 있을 수 있습니다. 오류 발견시 댓글로 꼭 말씀해주세요! 시작해볼까요?
하 진쟈 한 번만에 성공한거 너무 오랜만이라서 지금 흥분을 주체할 수 없어요. 아니 뭐 꼭 어려운 문제를 풀고 나서 성취를 느껴야 하는 건 아니잖아요? 안그래도 지금 백준에 뭐 안풀리는 문제 있어가지고(풀릴 듯 안풀리는... 분명 내일 풀면 풀릴 거야 망할 토마토...) 자존감 떨어지고 있는데 프로그래머스 와서 힐링 했네요ㅋㅋ
문제는 아래 [그림 1] 으로 깔끔하게 요약이 될 것 같습니다. 각 송신탑은 왼쪽으로 시그널을 보내고 자신 보다 높은 송신탑의 수신기가 시그널을 받죠. return 값은 내 시그널을 받은 수신기의 탑 번호, 없다면 0이 들어가 있는 vector 입니다.
코드 복사 하고 싶으신 분들은 [더보기]를 눌러주세요
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> heights) {
vector<int> answer;
// starting from the left to right
// ends condition i > 0 because answer for first tower is always 0
int size = static_cast<int>(heights.size());
for(int i = size - 1; i > 0; i--){
for(int find = i - 1; find > -1; find--){
// if receiver tower exists
if(heights[find] > heights[i]){
answer.push_back(find + 1);
break;
}
// if reciever tower doesn't exist
if(find == 0)
answer.push_back(0);
}
}
answer.push_back(0); // answer for first tower is always 0
reverse(answer.begin(), answer.end()); // answer push_back started from the left
return answer;
}
#12 . 그냥 int size = heights.size() 해도 됩니다. 원래 vector의 size() return type이 unsigned long int인데 type conversion 해주지 않으면 노란 줄이 떠 캡쳐할 때 보기 안좋아서 explicit type conversion 해주었습니다.
#13 -24. 왼쪽 끝 부터 시작해서(바깥 for 문) 나의 시그널을 받아 줄 탑이 있는지를 찾아(안쪽 for문) 답을 저장하는 과정입니다. 어차피 제일 첫번째 탑의 송신을 받아 줄 탑은 없으므로 바깥 for 문의 종료 조건을 첫 번째 탑 검사 전에 끝내는 것으로 만들었습니다.
#25. 첫 번째 송신탑에 해당하는 답은 언제나 0이므로 별도로 삽입해줍니다.
#26. 왼쪽 끝부터 시작했기 때문에 answer에 들어가 있는 답은 실제 답과 역순이므로 한 번 더 뒤집어 줍니다.
채점결과 : 정확성(100.0) = 100.0
'CS > 알고리즘' 카테고리의 다른 글
[프로그래머스] 124 나라의 숫자 (재귀법) (2) | 2020.06.28 |
---|---|
[프로그래머스] Level 1에서 볼 만한 문제 (0) | 2020.06.17 |
[BOJ] 2606 바이러스 (0) | 2020.05.07 |
[개념] BFS & DFS (0) | 2020.05.07 |
[프로그래머스] 카펫 (0) | 2020.05.07 |
- Total
- Today
- Yesterday
- 커넥트재단
- 데이터분석
- 인턴
- 삼성소프트웨어아카데미
- 코테
- nosql
- 운영체제
- 알고리즘
- 프로그래머스
- SWIFT
- 개발자인턴
- 부캠
- 소프트웨어역량시험
- RxSwift
- 컴퓨터공학
- firebase
- 소프트웨어아카데미
- OS
- 코딩테스트
- TableView
- swacademy
- 삼성
- C++
- ios
- 보안
- 컴과졸작
- 부스트캠프2020
- 졸업작품
- 부스트캠프
- 컴공졸작
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |