개발자 톡
연습문제 톡
[HSAT 1회 정기 코딩 인증평가 기출] 로봇이 지나간 경로
어디가 문제인건지 잘 모르겠습니다!
- 등록일
- 2024-02-02 19:52:48
- 조회수
- 414
- 작성자
- yoobin11
#include<iostream>
#include<vector>
using namespace std;
int main(int argc, char** argv)
{
int H=0;
int W=0;
cin>>H>>W;
vector<vector<char>> map(W,vector<char>(H,0));
for(int i=0;i<H;i++){
for(int j=0;j<W;j++){
cin>>map[i][j];
}
}
pair<int,int> A;
pair<char,char> dir;
dir.first = '0';
dir.second = '0';
string ans;
int k=0;
for(int i=0;i<W;i++){
for(int j=0;j<H;j++){
if(map[i][j]=='#'&&A.first==0){
A.first=i+1;
A.second=j+1;
if(map[i][j+1]=='#'){
dir.first='>';
dir.second='>';
}
else if(map[i+1][j]=='#'){
dir.first='v';
dir.second='v';
}
k=10;
break;
}
}
if(k==10){
break;
}
}
int i=A.first-1;
int j=A.second-1;
while(1){
int count=0;
if(map[i][j]=='#'&&map[i][j+1]=='#'){
if(dir.second=='>'){
ans.push_back('A');
map[i][j+1]='0';
j+=2;
continue;
}
else if(dir.second=='v'){
ans.push_back('L');
ans.push_back('A');
dir.second='>';
map[i][j+1]='0';
j+=2;
continue;
}
else if(dir.second=='^'){
ans.push_back('R');
ans.push_back('A');
dir.second='>';
map[i][j+1]='0';
j+=2;
continue;
}
}
else if(map[i][j]=='#'&&map[i+1][j]=='#'){
if(dir.second=='v'){
ans.push_back('A');
map[i+1][j]='0';
i=i+2;
continue;
}
else if(dir.second=='<'){
ans.push_back('L');
ans.push_back('A');
dir.second='v';
map[i+1][j]='0';
i+=2;
continue;
}
else if(dir.second=='>'){
ans.push_back('R');
ans.push_back('A');
dir.second='v';
map[i+1][j]='0';
i+=2;
continue;
}
}
else if(map[i][j]=='#'&&map[i][j-1]=='#'){
if(dir.second=='<'){
map[i][j-1]='0';
ans.push_back('A');
j-=2;
continue;
}
else if(dir.second=='^'){
map[i][j-1]='0';
ans.push_back('L');
ans.push_back('A');
dir.second='<';
j-=2;
continue;
}
else if(dir.second=='v'){
map[i][j-1]='0';
ans.push_back('R');
ans.push_back('A');
dir.second='<';
j-=2;
continue;
}
}
else if(map[i][j]=='#'&&map[i-1][j]=='#'){
if(dir.second=='^'){
map[i-1][j]='0';
ans.push_back('A');
i-=2;
continue;
}
else if(dir.second=='>'){
map[i-1][j]='0';
ans.push_back('L');
ans.push_back('A');
dir.second='^';
i-=2;
continue;
}
else if(dir.second=='<'){
map[i-1][j]='0';
ans.push_back('R');
ans.push_back('A');
dir.second='^';
i-=2;
continue;
}
}
if(count==0){
break;
}
}
cout<<A.first<<" "<<A.second<<endl<<dir.first<<endl<<ans;
return 0;
}
#[hsat_1회_정기_코딩_인증평가_기출]_로봇이_지나간_경로