https://school.programmers.co.kr/learn/courses/15008/lessons/121685
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
stack에 나머지를 순서대로 저장해서 유전법칙의 맨 위쪽부터 검사해 줬다. RR, rr이 한 번이라도 생기면 그 아래는 다 같으므로 먼저 종료해 줬다. 1,1이 케이스로 들어오는지 모르겠지만 이 부분도 처리해 줬다.
#include <string>
#include <vector>
#include <stack>
using namespace std;
vector<string> solution(vector<vector<int>> v) {
vector<string> answer;
for (int i = 0; i < v.size(); i++) {
stack<int> stk;
int state = -1; // 0 == RR 1,2 == Rr 3 == rr
int col = v[i][0], row = v[i][1] - 1; // idx로 넣기 위해
if (col == 1) { // 첫번째거는 무적권
answer.push_back("Rr");
continue ;
}
for (int j = 0; j < col - 1; j++) { // 마지막건 빼줘야함 맨 위껀 노필요
stk.push(row % 4);
row /= 4;
}
while (!stk.empty()) {
if (stk.top() == 0) { // RR
state = 0;
break ; // rr, RR은 같은애들만 나오므로 반복문 더 돌 필요없음
}
else if (stk.top() == 3) { // rr
state = 3;
break ;
}
else
state = 1;
stk.pop();
}
if (state == 0)
answer.push_back("RR");
else if (state == 3)
answer.push_back("rr");
else
answer.push_back("Rr");
}
return answer;
}
'<algorithm> > 프로그래머스' 카테고리의 다른 글
프로그래머스 소수 찾기 c++ (0) | 2023.09.09 |
---|---|
프로그래머스 스킬트리 c++ (0) | 2023.09.08 |
프로그래머스 PCCP모의고사 1회 2번 체육대회 c++ (0) | 2023.09.06 |
프로그래머스 PCCP모의고사 1회 1번 외톨이 알파벳 c++ (0) | 2023.09.06 |
프로그래머스 무인도 여행 c++ (1) | 2023.09.02 |