https://school.programmers.co.kr/learn/courses/30/lessons/120861
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<string> keyinput, vector<int> board) {
vector<int> answer;
answer.push_back(0);answer.push_back(0);
int minR = -board[0]/2;
int maxR = board[0]/2;
int minC = -board[1]/2;
int maxC = board[1]/2;
for(int i=0;i<keyinput.size();i++)
{
if(keyinput[i]=="left")
{
if(answer[0]-1>=minR)
answer[0]--;
}
else if(keyinput[i]=="right")
{
if(answer[0]+1<=maxR)
answer[0]++;
}
else if(keyinput[i]=="up")
{
if(answer[1]+1<=maxC)
answer[1]++;
}
else
{
if(answer[1]-1>=minC)
answer[1]--;
}
}
return answer;
}
설명
keyinput[i] 에 따라 좌표를 움직이기만 하면 되는 간단한 문제이다.
board의 크기는 홀수이고 중앙이 0,0 이라고 하였으니
갈 수 있는 범위는 -가로크기/2 ~ 가로크기/2 , -세로크기/2 ~ 세로크기/2 까지이다.
int minR = -board[0]/2;
int maxR = board[0]/2;
int minC = -board[1]/2;
int maxC = board[1]/2;
범위를 나타내는 변수를 선언한다.
for문을 돌며 각 명령에 따라 이동할 수 있는지를 판단하고 좌표를 움직인다.
'알고리즘 > 프로그래머스 1단계' 카테고리의 다른 글
프로그래머스 - 종이 자르기 - C++ (0) | 2023.09.06 |
---|---|
프로그래머스 - 문자열 밀기 - C++ (0) | 2023.09.05 |
프로그래머스 - 모스부호(1) - C++ (0) | 2023.09.03 |
프로그래머스 - 진료순서 정하기 - C++ (0) | 2023.09.02 |
프로그래머스 - 소인수분해 - C++ (0) | 2023.09.01 |