프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 😉문제 풀이 설명 개인적으로 조금 어려웠던 문제였습니다. 이 문제는 Map 객체를 쓰지 않고는 어떻게 풀 방법이 생각나지 않네요. 이번에 배웠던 점은 map.value().next() 함수를 통해서 Map을 Queue와 같은 형태로 사용할 수 있다는 점입니다. Map 객체를 Queue의 형태로 사용할 수 있으면서 동시에 key값으로 원하는 값을 가질 수 있어 데이터를 찾는데 배열을 순회하는 형식O(n)이 아닌 한번에 찾을 수 있는 점O(1)을 배울 수 있었습니다. Map.prototype.values() - ..
이번 포스팅에서 이벤트 핸들러 등록 방식에 대해 알아봅시다 🤔이벤트 핸들러 어트리뷰트 방식 HTML요소의 어트리뷰트 중에는 이벤트에 대응하는 이벤트 핸들러 어트리뷰트가 있습니다. 이벤트 핸들러 어트리뷰트 값으로 함수 호출문 등의 문을 할당하면 이벤트 핸들러가 등록됩니다. Click! 주의할 점은 함수 참조가 아닌 함수 호출문 등의 “문”(statement)를 할당한다는 것이다. 이 방식은 더 이상 사용하지 않는 것이 좋다. html과 js의 관심사가 다르므로 혼재하는 것 보다는 분리하는 것이 좋다. 하지만 CBD(Component Based Development) 방식의 라이브러리는 이벤트 핸들러 어트리뷰트 방식으로 이벤트를 처리한다. Click Click Click Click 🤔이벤트 핸들러 프로퍼티 ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 😉문제 풀이 설명 아래는 브루트 포스, 완전 탐색을 이용한 문제풀이 입니다. user_id 배열의 길이가 8 이하임을 캐치하고 완전 탐색으로 풀었습니다. 재귀를 이용하여 풀었고, 같은 문자열임을 확인하는 데는 정규 표현식을 사용하였습니다. pick_arr는 현재 선택한 user_id를 뜻합니다. pick_arr[i] 값이 0이면 user_id[i] 선택되지 않았고, 1이라면 선택되었음을 뜻합니다. answer_arr에는 경우의 수를 담습니다. banned_index를 완전히 순회한다면 pick_arr를 joi..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 😉문제 풀이 설명 위 문제는 DP문제입니다. 따라서 점화식을 구하고, 이에 따른 코드를 작성할 필요가 있습니다. 점화식은 다음과 같습니다. dp[i] = Math.max(dp[i - 1], dp[i - 2] + sticker[i]) 🤨주의 사항 dp[i] 배열을 순회할 때 참조하는 인덱스는 i-1과 i-2입니다. 따라서 dp 배열의 0번째 인덱스와 1번째 인덱스는 값을 채워주고 순회를 시작해야 합니다. 문제에서 스티커는 원형으로 연결되어 있습니다. 따라서 첫 번째 스티커를 떼는 경우와 떼지 않는 경우 두 가지..
1208번: 부분수열의 합 2 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 😉문제 풀이 설명 문제에서 주어진 숫자는 최대 40개. 40개로 부분 수열을 만든다면 경우의 수가 2^40으로 시간초과가 됩니다. 따라서 다음과 같은 전략으로 문제를 풀 수 있습니다. 두 배열을 나누어서 경우의 수를 구합니다. 배열을 두 개로 나누면, 경우의 수가 2^20을 가진 배열 2개를 가지게 됩니다. 2^20은 100만번의 순회가 이루어져 시간 제한을 넘기지 않습니다. 따라서 두 배열 A와 B로 나눈 후 문제를 풉니..
2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1 ≤ m ≤ 1,000)이 주어지고, 그 www.acmicpc.net 😉문제 설명 두 배열에서 연속된 합의 숫자를 찾은 값의 합이 T가 되는 경우의 수를 찾습니다. A배열에서 찾을 수 있는 경우의 수를 찾아 객체에 넣습니다. 이 객체는 key값으로 만들 수 있는 숫자를, value로 key값을 만들 수 있는 횟수를 넣습니다. B배열에서 찾을 수 있는 경우의 수를 만들며 이 수와 A배열로 만들어진 객체의 값을 더해 T값이 나올 수 있는 경우를 찾습니다...