• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

해당 문제에 질문이 있습니다.

19.10.05 22:39 작성 조회수 94

1

제가 java에 대한 syntax가 조금 부족한 것 같은데요,
1). 화면상의 코드 41 line 의 while 문에 의해 

x, y 가+dir[] 해서 이동하다가 벽을 만나면 튕겨나오고, 다시 -dir[]를 해주잖아요.

이거 밑에

if(visited[x][y]) continue

visited[x][y] = true;

에서, if 문의 x y 는 while 문 범위 밖의 x y고,

visited[x][y] = true;의 x y 는 그 범위밖 바로 전 요소의 x y 가 맞나요??

아니면 둘다 그냥 벽과 maze 범위 밖 바로 전 요소의 x y 인가요?

2). 그리고 syntax 적 질문인데,

hasPath 에서 m,n을 

int m = 

int n = 으로 하게되면,

hasPath 메소드에서 m과 n을 다시 정의하게 되므로, 값이 안나오는게 맞나요?
처음에 int를 썼다가, 좌표에 true false값들이 print 되지 않아서 이것저것 고쳐보다가 int를 빼니까 출력이 되서요..

3). 마지막으로, 선생님강의 절반 넘게 수강하면서 열심히 강의 듣고, 혼자서 구현하면서 기계적인 부분은 외우고, 코딩테스트 준비하고 있는데요.
해당 강의 끝무렵에, bfs dfs 문제가 시간 오래걸린다고 말씀하셨는데, 전 이 문제도 시간이 많이걸립니다 ㅠ 혹시 이문제의 난이도가 삼성 역량테스트 나 이외 대기업 코딩테스트와 비교한다면 어느정도 되는건지 말씀해주실 수 있나요?

얼추 2주  넘는 시간이 시험전까지 있는데, 전력을 다하고 있습니다.

답변 4

·

답변을 작성해보세요.

2

삼성 준비하시는군요~~^^ 꼭 되실겁니다. 걱정마세요.

이문제의 난이도는 상급입니다. 그리고 단골문제입니다.

많은 사람들이 풀거 같지만 못 풉니다. ㅋㅋ

삼성이나 카카오 문제에서 bfs dfs는 꼭 나옵니다. 

제가 푼 문제는 일정한 규칙이 있습니다. 그걸 익히면 점점 대기업문제가 어디서 꼬와서 내는지 이해를 할 수 있죠 그 능력이 생기는 순간, 우리는 어디 회사에도 입사할 수 있습니다. 

1

1). x y 의 동작과정을 조금만 더 여쭤보면, 
while 문에서 범위밖의 x y 가 인식되어서 while 문 탈출하게 되고, x y에서 - 연산해준다.

그 밑에,

if(visited[x][y]) continue;
visited[x][y] = true; 에서는

해당 x y의 visited가 true(이미 방문함) 이면 continue 해버리고,
true 가 아니면 true로 설정해준다!

이 동작과정이 맞을까요?

2). ide로 intellij를 사용하는데 아무 결과 값이 출력되지 않아서 여쭤봤습니다.
기본적이지만 자주 헷갈려서 여쭤보는데, 전역변수로 설정해놓은 변수를 메소드에서 연산과정을 거치게 되면
해당 전역변수 값 자체가 연산결과 값으로 바뀌는게 맞죠?

3). 감사합니다 최선을 다해보겠습니다.

0

1) 번 이해하신거 맞습니다. 결국 우리는 좌표를 구하는거죠, 강좌 영상의 좌표를 잘 보세요, 그 좌표를 찾는게 핵심이니까

2번은 무슨 내용인지 잘 모르겠네요. intellij도 같을텐데요 

주어진 matrix 문제에서 m,n 행과열입니다. 그건 변하지 않기 때문에 전역변수로 빼놨는데요.

감사합니다.

0

1) x,y는 말그대로 좌표값입니다.

좌표04 에서 사방으로 찾아 들어가는거죠. 

while문을 탈출할때는 조건이 안 맞아서 탈출하는거죠

2) m, n은 전역변수로 밖에 일부러 빼놓은겁니다.

수시로 사용할 수 있기때문에 밖에 일부러 빼놓은겂니다.

hasPath함수 내에서 다시 정의해서 사용하면 compile error가 날겁니다.

3) 이건 단순 응용문제중에 하나 입니다.

dfs, bfs기본문제는 numberOfIsland 이니까요. 수십번 풀고 외우고 해야 머리속에 박히고 나서 maze문제를 푸셔야 순서가 맞습니다. 

기업에서 시험볼때는 그래프 문제가 응용이 너무 무궁무궁해서 계속 응용해서 내는거죠. 그냥 무조건 나온다고 봐야죠