-
Notifications
You must be signed in to change notification settings - Fork 126
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[재호] WEEK 04 Solutions #408
Conversation
앞에 분을 리뷰어로 추가하고 체크 했습니다.
이미 되어 있길래 체크 했습니다. |
var exist = function (board, word) { | ||
let result = false; | ||
|
||
// 1. 2차원 배열의 모든 좌표를 순회 | ||
for (let r = 0; r < board.length; r++) { | ||
for (let c = 0; c < board[0].length; c++) { | ||
dfs(r, c, 0); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
처음 result 라는 변수를 선언 하시고 시작하시는데
dfs 자체가 true를 반환하면 true를 반환하도록 하는 것도 괜찮을것 같아요!
설명이 너무 친절하게 달려있어서 유일하게 하나 말씀드리자면 이정도 일것 같습니다.
문제 푸시느라 고생 많으셨습니다 ㅎㅎ
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오, 그럼 flag 변수를 사용하지 않을 수 있군요!
유용한 아이디어 감사합니다!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* nums의 숫자에 접근하는 횟수는 2번에서 N만큼, 4번에서 최대 N만큼 입니다. | ||
* 즉, 2N번 만큼 nums의 숫자에 접근합니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
설명과 결론이 잘 부합하지 않는 것 같은데요? 중첩 루프 잖아요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다시 보니 설명이 부족해서 오해를 살 수 있었던 것 같습니다!
N^2이 아닌 2N으로 생각한 이유는 2번에서 N번의 순회를 하지만 각 순회가 서로에게 영향을 미치기 때문에 최대 순회는 2N으로 계산했습니다. (1번의 N 순회 제외)
- [1, 2, 3, 4, 5, 6, 7, 8, 9] 인 경우 => 2N
1 방문 -> 1~9까지 순회
2 방문 -> 끝
3 방문 -> 끝
...
9 방문 -> 끝
- [1, 3, 5, 7, 9] 인 경우 => N
1 방문 => 끝
3 방문 => 끝
...
9 방문 => 끝
- [1, 2, 3, 4, 5, 7, 8, 9] 인 경우 (6제외) => N ~ 2N
1 방문 => 1~5까지 순회
2 방문 => 끝
...
7 방문 => 7~9까지 순회
8 방문 => 끝
9 방문 => 끝
var maxProduct = function (nums) { | ||
let maximumProduct = Number.MIN_SAFE_INTEGER; | ||
let subProduct = 1; | ||
// 1. 좌에서 우로 누적곱을 저장하기 위해 순회 | ||
for (let index = 0; index < nums.length; index++) { | ||
// 2. 0을 만나면 누적곱에 곱하지 않고 1로 초기화 | ||
if (nums[index] === 0) { | ||
maximumProduct = Math.max(maximumProduct, 0); | ||
subProduct = 1; | ||
continue; | ||
} | ||
// 3. 매번 누적곱을 갱신 | ||
subProduct *= nums[index]; | ||
maximumProduct = Math.max(maximumProduct, subProduct); | ||
} | ||
|
||
subProduct = 1; | ||
// 4. 우에서 좌로 누적곱을 저장하기 위해 순회 | ||
for (let index = nums.length - 1; index >= 0; index--) { | ||
// 5. 0을 만나면 누적곱에 곱하지 않고 1로 초기화 | ||
if (nums[index] === 0) { | ||
maximumProduct = Math.max(maximumProduct, 0); | ||
subProduct = 1; | ||
continue; | ||
} | ||
// 6. 매번 누적곱을 갱신 | ||
subProduct *= nums[index]; | ||
maximumProduct = Math.max(maximumProduct, subProduct); | ||
} | ||
|
||
return maximumProduct; | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
양방향 훑기! 신선한 답안입니다! 👏 모임 때 소개해주셔도 재밌을 것 같아용~
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
모임에서 소개해주실 분이 계셔서 기회가 되면 소개드리도록 하겠습니다!!
* @return {boolean} | ||
*/ | ||
var isPalindrome = function (s) { | ||
const phrase = s.toLowerCase(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
선재적으로 소문자 변환을 하는 대신에 31번째 줄에서 비교할 때 하면 공간 효율을 개선할 수 있지 않을까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
답안 제출 문제
체크 리스트
In Review
로 설정해주세요.