짬뽕얼큰하게의 맨땅에 헤딩 :: 백준(BOJ) 3005번

백준(BOJ) 3005번

알고리즘 2018. 11. 9. 12:53

http://www.boj.kr/3005


접근방법: 방향이 왼-> 오른, 위 -> 아래 방향이므로  


왼 -> 오른의 문자열중 가장 빠른 단어를 찾고(go함수),

 xy 대칭 시킨 후(rotate 함수),

다시 왼 -> 오른의 문자열중 가장 빨리 나오는 단어를 찾았다(go함수).



실수: xy대칭 함수를 작성할때 정사각형을 생각하고 작성하였다.

때문에 직사각형일 경우 정사각형부분만 대칭되는 문제가 있었다.

ㅠㅠ 좀더 생각잘하자



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
#include <iostream>
#include <string.h>
#include <cstdio>
char result[21]="zzzzzzzzzzzzzzzzzzzz";
char str[21][21];
int R, C;
void rotate(){
  for(int i = 0; i < 21; i++){
    for(int j = 0;j <= i; j++){
      char tmp = str[i][j];
      str[i][j] = str[j][i];
      str[j][i] = tmp;
    }
  }
}
 
void go(){
  for(int i = 0 ; i < R; i++){
    for(int j = 0; j < C; j++){
      if(str[i][j] == '#') str[i][j] = 0;
    }
    int j = 0;
    while(j + 1 < C){
      if(str[i][j] != 0 && str[i][j + 1!= 0){
        if(strcmp(str[i] + j, result) < 0){
          strcpy(result, str[i] + j);
        }
        while(j < C && str[i][j] != 0){
          j++;
        }
      }
      else{
        j++;
      }   
  }
}
 
int main(void){
  scanf("%d %d"&R, &C);
  scanf("%*c");
  for(int i = 0; i < R; i++){
    scanf("%s", str[i]);
  }
  go();
  rotate();
  go();
  printf("%s", result);
 
}
cs

'알고리즘' 카테고리의 다른 글

백준(BOJ) 2920  (0) 2018.11.25
백준(BOJ) 2178  (0) 2018.11.25
알고스팟(algospot) JLIS  (0) 2018.11.13
백준(BOJ) 11053  (0) 2018.11.13
알고스팟(algospot) WILDCARD  (0) 2018.11.13
블로그 이미지

짬뽕얼큰하게

,