일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코레일기출복원 #코레일필기시험 #코레일 #한국철도공사
- #가람스나이퍼
- 정보보안기사 #정보보호론 #사이버 #정보보안기사 필기 #정보보안기사 실기
- 2023
- #이어령 선생님 #지성에서 영성으로
- 6월끝 #7월시작 #상반기끝
- 크라우드펀딩 #오마이컴퍼니 #첫후원 #후원
- 하버드 감정수업 #HARVADE 감정수업 #하버드 #하버드대학교 #HARVADE UNIVERSITY
- 코딩테스트
- Tag#이은석#이은석성균관대교수#성균관대#성균관대학교#성균관대SW중심대학사업단장#기술변화#MZ세대#기술혁신#취업#기업#이은석성균관대SW융합대학장
- 정보처리기사 #전산직 #정보보안기사 #DB #데이터베이스 #암호학 #가상화 #인터넷 #알고리즘 #자료구조 #파이썬 #소공 #SQL #네트워크 #웹
- #인천신용보증공단 #신용보증공단 #신보 #경영학 #경제학 #일반상식 #한국사
- 철인 #김다니엘목사님 #세상이감당치못하는사람 #여천전남병원퇴원 #장염 #고열 #입원
- 삼성보안기술포럼
- 전주역 #국민연금공단 #전산직 #해커스경찰 #기도 #말씀 #예배 #찬양 #국밥 #무궁화호 #용산역 #노량진역
- 2021 청년다니엘기도회 #다니엘기도회 #청년 #2021 #첫(처음)
- 취준생 #수험생 #공시생#자금#건강#기도
- 태어나는 건 순서가 있지만 천국 가는 건 순서가 없다
- SSTF
- 정보보안기사
- 다니엘기도회 #오륜교회 #하나님을자랑하는간증의주인공이되자#말씀#기도#전도#영혼구원#성령님#주님꼐서일하신다#하나님#예수님#성령님
- 경찰 #여행 #식사 #교제 #만남 #운동
- 책읽는사자
- National Geography. 예술의전당 한가람미술관3층
- #함께함이 기쁨입니다 #청년 #주안장로교회 #청년
- 정보보안기사 #18회 #정보보안기사필기시험
- #소명 #하나님의 시간을 잇는 싸움 # 하나님께 쓰임 받는 시간 #김남국 목사님 #마커스워십 #2023
- #두란노 #생명의삶 #12월호 #QT #한눈으로보는성경 #요한계시록
- 박영선 목사님 #박영선의 기도
- #둘로스
- Today
- Total
Share Garam's everyday life.
로봇청소기 코드 본문
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int left(int r, int c, int d, int **arr);
void leftrotate(int *d);
void forward(int *r, int *c, int d);
void backward(int *r, int *c, int d);
int notblock(int r, int c, int d, int **arr);
int main(void) {
int N = 0;
int M = 0;
int r, c, d;
int **arr;
int i, j;
scanf("%d %d", &N, &M);
scanf("%d %d %d", &r, &c, &d);
arr = (int **)malloc(N * sizeof(int *));
for (i = 0; i < N; i++)
arr[i] = (int *)malloc(M * sizeof(int));
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
scanf("%d", &arr[i][j]);
}
}
int count = 0;
int turn = 0;
int flag = 0;
while (1) {
arr[r][c] = 2; //청소했다.
count++;
while (1) {
if (4 > turn) {
if (left(r, c, d, arr) == 0) {
leftrotate(&d);
forward(&r, &c, d);
turn = 0;
break;
}
else {
leftrotate(&d);
turn++;
continue;
}
}
else if (8 > turn) {
if (notblock(r, c, d, arr) == 1) {
backward(&r, &c, d);
turn = 0;
continue;
}
else {
flag = 1;
break;
}
}
}
if (flag == 1) {
flag = 0;
break;
}
}
printf("%d\n", count);
return 0;
}
int left(int r, int c, int d, int **arr) {
if (d == 0) //북
return arr[r][c - 1];
else if (d == 1) //동
return arr[r - 1][c];
else if (d == 2) //남
return arr[r][c + 1];
else if (d == 3) //서
return arr[r + 1][c];
else
return 0;
}
void leftrotate(int *d) {
if (*d == 0) //북쪽을 보면
*d = 3; //서쪽으로 방향을 옮긴다.
else if (*d == 1) //동쪽을 보면
*d = 0; //북쪽으로 방향을 옮긴다.
else if (*d == 2) //남쪽을 보면
*d = 1; //동쪽으로 방향을 옮긴다.
else if (*d == 3) //서쪽을 보면
*d = 2; //남쪽으로 방향을 옮긴다.
else
;
}
void forward(int *r, int *c, int d) {
if (d == 0) //북
*r -= 1;
else if (d == 1) //동
*c += 1;
else if (d == 2) //남
*r += 1;
else if (d == 3) //서
*c -= 1;
else
;
}
int notblock(int r, int c, int d, int **arr) {
if (d == 0) { //북
if (arr[r + 1][c] == 2) // 뒤를 확인한다. 청소가 됬는지
return 1; // 맞으면 1을 반
else
return 0; // 틀리면 0을 반환
}
else if (d == 1) { // 동
if (arr[r][c - 1] == 2)
return 1;
else
return 0;
}
else if (d == 2) { // 남
if (arr[r - 1][c] == 2)
return 1;
else
return 0;
}
else if (d == 3) { // 서
if (arr[r][c + 1] == 2)
return 1;
else
return 0;
}
}
void backward(int *r, int *c, int d) {
if (d == 0) //북
*r += 1;
else if (d == 1) // 동
*c -= 1;
else if (d == 2) // 남
*r -= 1;
else if (d == 3) //서
*c += 1;
else
;
}
'가람이 이야기' 카테고리의 다른 글
롯데 모의 면접 피드백 (0) | 2018.04.11 |
---|---|
18.04.11 05~일기 (0) | 2018.04.11 |
착하면서도 만만해보이지 않는 방법, 거절하는법, 인간관계 대응방법, 무레한 사람 무리한 요구 거절하는 구체적 멘트 포함 (0) | 2018.04.09 |
백준코딩 알고리즘 1924번:2007년 (0) | 2018.03.05 |
삼성SDS 회사초청간담회 및 설명회.18.02.28 (0) | 2018.03.01 |