inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Các vấn đề kiểm tra mã hóa cơ bản hàng đầu được giải quyết thực sự dễ dàng (với Java)

Ma trận xoắn ốc

조건 질문드립니다.

219

7d9fbah1mz

5 câu hỏi đã được viết

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 코테 준비 같이 해요!

Câu trả lời 2

3

E mergency

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

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

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

1

pushupman

안녕하세요.

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

일단 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

258

0

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

0

214

0

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

0

226

0

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

1

379

1

질문드립니다

1

229

1

Unique Paths Integer 질문입니다

0

222

1

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

1

257

1

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

0

312

2

질문드립니다~

0

199

1

left if문에 대해서

1

258

1

오타 인가요?

1

239

1

안녕하세요 강사님

1

191

1

질문 드립니다

0

173

2

Queue&Stack 문제해설집 문의

0

184

1

문제분석 로직 질문

1

231

1

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

1

233

1

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

1

206

1

for-each 문 질문있습니다!

0

299

1

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

2

287

2

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

1

286

3

강사님 오류맞나요?

1

209

1

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

1

176

1

질문입니다.

1

203

1

문제에 대한 이해

1

314

1