inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

정말 쉽게 풀어보는 코딩 테스트 top 기본 문제 (with 자바)

나선형매트릭스(SpiralMatrix)

조건 질문드립니다.

215

7d9fbah1mz

작성한 질문수 5

2

안녕하세요! 선생님

문제 풀던 와중에 궁금한 점이 생겨 질문드립니다.

       while (rowStart <= rowEnd && colStart <= colEnd) {
            for (int i = colStart; i <= colEnd; i++) {
                result.add(matrix[rowStart][i]);
            }
            rowStart++;

            for (int i = rowStart; i <= rowEnd; i++) {
                result.add(matrix[i][colEnd]);
            }
            colEnd--;

           if (rowStart <= rowEnd) //조건
                for (int i = colEnd; i >= colStart; i--) {
                    result.add(matrix[rowEnd][i]);
                }
            rowEnd--;

            if (colStart <= colEnd) //조건
                for (int i = rowEnd; i >= rowStart; i--) {
                    result.add(matrix[i][colStart]);
                }
            colStart++;

2차원 배열을 순환 시키는 코드 부분에서, while문에 배열을 벗어나지 않게 조건이 있는데, 추가적으로 왜 조건을 주는 지 궁금해 졌습니다.

조건을 제외하고 배열 부여시

{{1,2,3},{4,5,6},{7,8,9}} 는 원하는 값이 나오지만

{{1,2,3,4},{5,6,7,8},{9,10,11,12}}는 [1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7, 6]와 같이 6이 하나 더 나옵니다.

왜 6이 한번 더 찍히는 지 고민해봤지만 생각이 꼬이기만 하여, 좀 더 설명을 부탁드리고자 질문드립니다 ㅠㅠ

감사합니다.

java 코테 준비 같이 해요!

답변 2

3

E mergency

저도 이거 보다가 궁금증이 생겼는데

왜 좌측방향 아래방향 갈때는 조건을 안걸어 주고, 우측방향 위쪽방향 갈때만 조건을 걸어주는건가요?

좀 더 구체적인 설명을 해주셨으면 합니다

1

푸샵맨 코딩스터디

안녕하세요.

좋은 질문 감사합니다.^^;

일단 1차 답변 드리겠습니다. 향후에 더 설명이 필요하면 보완할게요.

먼저,

1. "while문에 배열을 벗어나지 않게 조건이 있는데, 추가적으로 왜 조건을 주는 지 궁금해 졌습니다."

-> 맞습니다. 저 조건이 핵심입니다. 

저 while문을 만족하면서 돌고 있는데  내부적으로 rowStart++를 해주는부분이 있습니다 그 순간에 값이

rowStart: 2 rowEnd: 1 이렇게 되는 순간이 발생합니다. 그때 값이 matrix[1][1] 6 됩니다.

이걸 방지하는 목적입니다.

rowStart는 무조건  rowEnd보다는 작거나 같아야(<=)하죠 무조건무조건 이죠^^;

문제에서는 left쪽으로 향할때 조건을 걸어주면 됩니다.

혹시 이해가 안되시면  아래 카피하셔서 보시면됩니다.

프린트 해보시면 됩니다.

System.out.println("rowStart: "+rowStart+" rowEnd: "+rowEnd);

//if (rowStart <= rowEnd) {

추가적으로 while문 돌릴때 항상 빠져나오는 조건 조심해서 봐야합니다. while문에 조건으로 준 내용을 걸어서 빠져나오는 패턴이 주류입니다. 이 문제도 역쉬 그렇습니다.

while문에서 걸어준 제약 조건을 한번 더 걸어준거 뿐이죠 그렇게 이해하면서 다른 비슷한 문제도 보시면 와일문에 조건으로 전부 걸어주고 풀어주고 하는 패턴이 보이실겁니다. 점점 고수의 길로 접어드는거죠 ^^;

강의자료에 나오는 m과 n의 범위가 코딩하고 다른거 같습니다

0

255

0

나선형매트릭스 깃허브에 코드가 없는것같아요

0

211

0

로그 파일의 데이터 재정렬 코드가 깃허브에 없어요!

0

225

0

새로 생긴 기초강의 질문드려요

1

377

1

질문드립니다

1

221

1

Unique Paths Integer 질문입니다

0

220

1

subString 방법으로 문제 풀이 영상은 짤린건가요?

1

254

1

DFS 방식으로 푼 것이 맞나요?

0

310

2

질문드립니다~

0

197

1

left if문에 대해서

1

257

1

오타 인가요?

1

238

1

안녕하세요 강사님

1

190

1

질문 드립니다

0

173

2

Queue&Stack 문제해설집 문의

0

184

1

문제분석 로직 질문

1

231

1

시간 복잡도 문의드립니다.

1

233

1

시간복잡도 질문드립니다.

1

204

1

for-each 문 질문있습니다!

0

295

1

강의영상에서 사용된 로그 메소드가 궁금합니다.

2

282

2

강의자료 + 문제 이해 관련 질문입니다

1

279

3

강사님 오류맞나요?

1

208

1

강사님 시간 복잡도에 대해서 질문드립니다.

1

174

1

질문입니다.

1

203

1

문제에 대한 이해

1

314

1