Skip to content
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

Merged
merged 10 commits into from
Sep 7, 2024
Merged

[재호] WEEK 04 Solutions #408

merged 10 commits into from
Sep 7, 2024

Conversation

wogha95
Copy link
Contributor

@wogha95 wogha95 commented Sep 1, 2024

답안 제출 문제

체크 리스트

  • PR을 프로젝트에 추가하고 Week를 현재 주차로 설정해주세요.
  • 바로 앞에 PR을 열어주신 분을 코드 검토자로 지정해주세요.
  • 문제를 모두 푸시면 프로젝트에서 Status를 In Review로 설정해주세요.
  • 코드 검토자 1분 이상으로부터 승인을 받으셨다면 PR을 병합해주세요.

@wogha95 wogha95 self-assigned this Sep 1, 2024
@github-actions github-actions bot added the js label Sep 1, 2024
@wogha95 wogha95 requested review from TonyKim9401 and removed request for TonyKim9401 September 1, 2024 06:35
@wogha95 wogha95 marked this pull request as ready for review September 4, 2024 13:24
@wogha95 wogha95 requested a review from a team as a code owner September 4, 2024 13:24
@DaleSeo DaleSeo requested a review from TonyKim9401 September 4, 2024 23:12
@DaleSeo
Copy link
Contributor

DaleSeo commented Sep 4, 2024

바로 앞에 PR을 열어주신 분을 코드 검토자로 지정해주세요.

앞에 분을 리뷰어로 추가하고 체크 했습니다.

문제를 모두 푸시면 프로젝트에서 Status를 In Review로 설정해주세요.

이미 되어 있길래 체크 했습니다.

Comment on lines +10 to +18
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);
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

처음 result 라는 변수를 선언 하시고 시작하시는데
dfs 자체가 true를 반환하면 true를 반환하도록 하는 것도 괜찮을것 같아요!
설명이 너무 친절하게 달려있어서 유일하게 하나 말씀드리자면 이정도 일것 같습니다.
문제 푸시느라 고생 많으셨습니다 ㅎㅎ

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오, 그럼 flag 변수를 사용하지 않을 수 있군요!
유용한 아이디어 감사합니다!!

Copy link
Contributor

@DaleSeo DaleSeo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

창의적인 답안들 너무 좋습니다!

image

Comment on lines +4 to +5
* nums의 숫자에 접근하는 횟수는 2번에서 N만큼, 4번에서 최대 N만큼 입니다.
* 즉, 2N번 만큼 nums의 숫자에 접근합니다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

설명과 결론이 잘 부합하지 않는 것 같은데요? 중첩 루프 잖아요?

Copy link
Contributor Author

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. [1, 2, 3, 4, 5, 6, 7, 8, 9] 인 경우 => 2N
1 방문 -> 1~9까지 순회
2 방문 -> 끝
3 방문 -> 끝
...
9 방문 -> 끝
  1. [1, 3, 5, 7, 9] 인 경우 => N
1 방문 => 끝
3 방문 => 끝
...
9 방문 => 끝
  1. [1, 2, 3, 4, 5, 7, 8, 9] 인 경우 (6제외) => N ~ 2N
1 방문 => 1~5까지 순회
2 방문 => 끝
...
7 방문 => 7~9까지 순회
8 방문 => 끝
9 방문 => 끝

Comment on lines +8 to +39
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;
};
Copy link
Contributor

@DaleSeo DaleSeo Sep 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

양방향 훑기! 신선한 답안입니다! 👏 모임 때 소개해주셔도 재밌을 것 같아용~

Copy link
Contributor Author

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();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

선재적으로 소문자 변환을 하는 대신에 31번째 줄에서 비교할 때 하면 공간 효율을 개선할 수 있지 않을까요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오, 검사하는 부분에서 더 조건을 추가하면 되었군요!
같은 문자이거나 아스키 코드로 같은 알파벳인지 판단하게 개선하였습니다.
감사합니다~!!

@wogha95 wogha95 merged commit 94bfcdb into DaleStudy:main Sep 7, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
No open projects
Status: Completed
Development

Successfully merging this pull request may close these issues.

3 participants