티스토리 뷰
너무 어려웠다. 몇가지 생각할 사항이 있다.
1. 11*11 그래프 내에서 하나의 지점이 아니라 하나의 구간을 기준으로 생각해야 하기 때문이다.
그래서 하나의 지점에 대해 상하좌우 모든 구간을 생각할 수 없어서 가로 구간 세로 구간을 나눠서 생각했다.
2. 문제에서는 (0, 0)으로 시작했지만 그러면 2차원 행렬 인덱스가 음수를 갖게 되므로 시작 위치를 5,5로 지정해야한다.
3. 한 지점에 대해서 위로 움직이는 것은 바로 위의 지점에서 아래로 움직이는 것과 같은 구간을 가져야한다.
예를 들어 (5, 5) 지점에서 위로 가는 행동과 아래로 가는 행동이 똑같이 sero[5][5] = 1 이면 안된다는 뜻이다.
그러므로 나름의 기준이 있어야 한다.
예를 들어 윗 방향을 기준으로 한다고 하면, (5, 5) 위치에서 위로 가는 경우면 sero[x][y] =1을 하지만
(5, 5) 위치에서 아래로 간다고 하면 이미 nextX, nextY 는 5, 4를 의미하는 것이므로 sero[nextX][nextY] =1 을 한다.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
int sero_map[11][11] = {0};
int garo_map[11][11] = {0};
int solution(char* dirs)
{
int answer = 0;
int dirsX[4] = {0, 0, 1, -1};
int dirsY[4] = {1, -1, 0, 0};
int x = 5; int y = 5;
int nextX; int nextY;
int dirs_index;
for(int i = 0; i < strlen(dirs); i++){
if (dirs[i] =='U'){ dirs_index = 0; }
else if (dirs[i] == 'D'){ dirs_index = 1; }
else if (dirs[i] == 'R'){ dirs_index = 2; }
else if (dirs[i] == 'L'){ dirs_index = 3; }
nextX = x + dirsX[dirs_index];
nextY = y + dirsY[dirs_index];
if(nextX >=0 && nextY >=0 && nextX <= 10 && nextY <= 10){
if (dirs_index == 0 ) { sero_map[x][y]++; }
else if (dirs_index == 1) { sero_map[nextX][nextY]++; }
else if (dirs_index == 2) { garo_map[x][y]++; }
else if (dirs_index == 3) { garo_map[nextX][nextY]++; }
x = nextX; y = nextY;
}
}
for(int i = 0; i<= 10; i++){
for(int j = 0; j<= 10; j++){
if(garo_map[j][i] >= 1){
answer ++;
}
if(sero_map[j][i] >= 1){
answer ++;
}
}
}
return answer;
}
|
'알고리즘 > C' 카테고리의 다른 글
프로그래머스 쿠키 구입 C언어 (0) | 2019.09.22 |
---|---|
프로그래머스 올바른 괄호의 갯수 C언어 (0) | 2019.09.21 |
프로그래머스 멀리 뛰기 C언어 (0) | 2019.09.21 |
프로그래머스 가장 긴 팰린드롬 C언어 (2) | 2019.09.20 |
프로그래머스 스킬트리 C 언어, Python (0) | 2019.09.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- django 개발일지
- 장고 게시판
- django 로그인접근
- iOS 화면 안나옴
- django 태그
- pythonanywhere배포방법
- cleaned_data
- 알파벳 카운팅
- CellForRowAt Not Called
- iOS UITableView 출력안됨
- UITableViewController Not Working
- python 웹 배포
- iOS 검은 화면
- Django
- Realtime Database
- django tag
- 웹 배포
- 실시간 데이터베이스
- CellForRowAt 호출안됨
- django clean
- 까만 화면
- django 게시판
- 데이터베이스 추천
- 테이블출력안됨
- iOS 데이터베이스
- Firebase 데이터베이스 추천
- pythonanywhere배포
- 장고 태그달기
- django pythoneverywhere
- ModelForm Form 차이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
글 보관함