목록What I Learned/Algorithm (20)
우당탕탕 개발일기
스택 문제인 10773번. 그래서 스택이 무엇인가에 대해 먼저 알아보았다. 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조을 말한다. 스택의 의미를 알고나니 빈 배열을 두고 그 안에 값을 넣고 빼는 과정을 필요함을 확신할 수 있었다. (머리를 스쳐지나가는 push, pop..) 문제만으로는 이해가 어려워서 예제2와 힌트를 참고해 문제를 이해했다. 예제의 2의 입력 10 1 3 5 4 0 0 7 0 0 6 먼저 K는 10이므로 총 10줄이 생성되고, 그 후 각 줄에 정수 1개씩 배정된다. 이 때 0이 나오면 가장 최근의 수를 삭제한다. 위 과정을 거쳐서 예제2의 출력값은 2가 된다. K가 주어지고 어떻게 숫자가 구성되는지를 확인. https://developer.mozilla.org/ko/do..
규칙을 살펴보기 전, 숫자를 10으로 나누면 몫은 앞자리가, 나머지는 뒷자리가 되는 것을 한 번 더 떠올리고 들어가면 좋다! 26 / 10 = 몫: 2 / 나머지: 6 문제의 예시를 한 번 더 살펴보면, 26 → 2 + 6 = 8 → 68 입력값이 26인 경우, 2+6 = 8. 다음 수는 6이 10의 자리가 되고 8이 1의 자리가 되어서 68이 된다. 같은 과정을 반복하면 6+8 = 14. 다음 수는 8이 10의 자리가 되고 14의 오른쪽 수인 4가 1의 자리가 되어서 84가 된다. 여기서 입력값의 1의 자리는 다음 수의 10의 자리가 된다는 것, 각 자릿수의 합의 오른쪽 숫자가 1의 자리가 된다는 것이 포인트. 그럼 우리에게 필요한 과정은 1️⃣ 입력값의 10의 자리와 1의 자리를 뽑고, 2️⃣ 그걸 ..
보호되어 있는 글입니다.
오늘의 문제는 폰켓몬! 제목은 너무나도 귀엽지만 문제 글자수는 썩 귀엽지않은 문제다ㅎㅎ.. 제일 다양한 포켓몬을 고를 수 있는 방법을 찾고 그에 해당하는 포켓몬 종류 번호의 개수를 리턴하는 문제. 입출력 예를 보니, ✔️일단 result의 최댓값은 nums.length / 2 ✔️중복된 숫자 제거 먼저 진행해야 하나? ✔️그래서 result의 최댓값이 num.length / 2보다 크거나 작을 때로 구분해야하나? 이런 생각들이 들었다. 일단 배열 내 중복부터 제거하기로! 배열 내 중복 제거 방법은 여러가지가 있지만, 내가 선택한 방법은 Set! 먼저 new Set(nums)로 중복값이 있는 배열을 Set객체로 만들어서 중복을 제거하고, [...set]로 Set객체를 다시 배열로 변환하였다. 전개연산자라고..
문제만 읽었을 때 파악해본 것은 ✔️array의 i ~ j번째는 배열 내에서 i-1번째 ~ j-1번째 ✔️배열 자르기는 slice? ✔️그럼 slice를 쓰고 sort로 정렬 한 번 시킨 후 배열 내의 k-1번째 값 리턴하기 이 정도였다. 문제 자체는 파악하기가 쉬웠다. 문제는 commands값이 2차원 배열로 되어있어 리턴할 내용이 여러개라는 것.. 🤯 (= 내가 잘 못하는 것들 중 하나) 행렬의 덧셈부터 2차원 배열에 치여버린 나는 이거 보고 한숨 푹..for중첩문을 돌려야할까? 일단 간단하게 생각해서 돌려봤는데 commands[0]의 결과값이 도출되긴 했다. 그런데 문제는 1️⃣ return이 for문 바깥으로 나오면 값 도출이 어렵다는 것과 2️⃣ +=로 붙여주어도 commands[i]의 값들이 ..