회원가입
로그인
Toggle navigation
문제
문제
전체 문제
문제 출처
단계별로 풀어보기
알고리즘 분류
추가된 문제
문제 순위
문제
푼 사람이 한 명인 문제
아무도 못 푼 문제
최근 제출된 문제
최근 풀린 문제
랜덤
출처
ICPC
Olympiad
한국정보올림피아드
한국정보올림피아드시․도지역본선
전국 대학생 프로그래밍 대회 동아리 연합
대학교 대회
카카오 코드 페스티벌
Coder's High
ICPC
Regionals
World Finals
Korea Regional
Africa and the Middle East Regionals
Europe Regionals
Latin America Regionals
North America Regionals
South Pacific Regionals
문제집
대회
2
채점 현황
랭킹
게시판
그룹
더 보기
재채점 기록
블로그
강의
실험실
도움말
BOJ Stack
BOJ Book
전체
공지
자유
질문
오타/오역/요청
게시판 공지
홍보
업데이트
solved.ac
글쓰기
질문 도움말
자주묻는 질문
절실히 도움이 필요합니다 ㅠㅠ
13901번 - 로봇
oshskk
7년 전
0
왜 틀린지 고민해도 고민해도 모르겠네요 혹시 한번 봐주시고 틀린점 있으면 지적해 주시거나 수정해수시면 감사하겠습니다.ㅠㅠ
#include<stdio.h> #include<string.h> struct coordinate { int x; int y; }; //좌표생성 int main() { char order[10]; char s[20]; int n; int flag = 0; struct coordinate coor[1004]; //방해물 좌표 1000깨 까지 + 최대 이동 4번 struct coordinate start1; //시작좌표 struct coordinate size; //방 크기 scanf("%d %d", &size.y, &size.x); scanf("%d", &n); for (int i = 0; i<n; i++) { scanf("%d %d", &coor[i].y, &coor[i].x); //장애물 n개 만큼 만드는 거 } scanf("%d %d", &start1.y, &start1.x); //시작 좌표 fgets(s, sizeof(s), stdin); scanf("%[^\n]s", &order); //\n을 만날때까지 입력받아라 공백도 입력받는다 while (1) { int x = start1.x; int y = start1.y; for (int m = 0; 2 * m < 7; m++) { //명령은 최대 4가지 이므로 //printf("%d", n); // n이 제대로 증가했는지 확인하는거 int k = 2 * m; if (order[k] == '1') { //상 int flag1 = 0; for (int l = 0; l < n; l++) { if (start1.y - 1 == coor[l].y) { if (start1.x == coor[l].x) { flag1++; } //flag1>0 일 때에는 그 좌표에 방해물이 한 개는 있는 } } coor[n].x = start1.x; coor[n].y = start1.y; if (flag1 == 0) { if (start1.y - 1 >= 0) { start1.y-=1; } } } if (order[k] == '2') { int flag2 = 0; for (int l = 0; l < n; l++) { if (start1.y + 1 == coor[l].y) { if (start1.x == coor[l].x) { flag2++; } } } coor[n].x = start1.x; coor[n].y = start1.y; if (flag2 == 0) { if (start1.y + 1 <= size.y - 1) { start1.y+=1; } } } if (order[k] == '3') { int flag3 = 0; for (int l = 0; l< n; l++) { if (start1.x - 1 == coor[l].x) { if (start1.y == coor[l].y) { flag3++; } } } coor[n].x = start1.x; coor[n].y = start1.y; if (flag3 == 0) { if (start1.x - 1 >= 0) { start1.x-=1; } } } if (order[k] == '4') { int flag4 = 0; for (int l = 0; l< n; l++) { if (start1.x + 1 == coor[l].x) { if (start1.y == coor[l].y) { flag4++; } } } coor[n].x = start1.x; coor[n].y = start1.y; if (flag4 == 0) { if (start1.x + 1 <= size.x - 1) { start1.x+=1; } } } n++; } if (x == start1.x && y == start1.y) { //printf("깨진다2\n"); //printf("%d\n", n); break; } } printf("%d %d", start1.y, start1.x); }
댓글을 작성하려면
로그인
해야 합니다.
oshskk 7년 전