JavaScript 105

프로그래머스 같은 숫자는 싫어 JS (for문 / 스택 이용하기)

🧷 링크 문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 🙋‍♀️ 내 생각 스택 / 큐를 공부하면서, 실제 코드로도 연습하고 싶어서 풀어본 문제이다. 프로그래머..

프로그래머스 정수 내림차순으로 배치하기 JS ( sort()와 리액트 불변성유지 )

🧷 링크 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 🙋‍♀️ 내 생각 문제를 보고 숫자를 거꾸로 뒤집기위해서 sort()를 써야겠다고 생각했다. 매개변수 n은 숫자이다. 그런데 sort()는 배열에만 사용할 수 있는 메서드이다. 그래서 sort()를 사용하기 위해서는 형변환이 먼저 이루어져야한다. 이 문제는 sort()메서드만 안다면, 풀기 어렵지 않은 문제이다. 다만, sort()를 사용하고 다시 결괏값을 숫자로 변환하는 등의 여러번의 형변환을 거치는 과정을 잘 생각해야한다. ✅ 내 코드 function solution(n) { return ..

코어자바스크립트 정리 1. 데이터 타입

1-1. 데이터 타입의 종류 데이터 타입의 종류 Primitive type Reference type Number String Boolean null undefined Symbol Array Function Date RegExp Map, WeakMap Set, WeakSet 할당, 연산시 ➡️ 복제 할당, 연산시 ➡️ 참조 값이 담긴 주솟값을 바로 복제 값이 담긴 주솟값들로 이루어진 묶음을 가르키는 주솟값을 복제 불변성 엄밀히 말하면, 둘 모두 복제 기본형: 값이 담긴 주솟값을 바로 복제 참조형: 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주솟값을 복제 1-2. 데이터 타입에 관한 배경지식 1-2-1 메모리와 데이터 1비트마다 0 또는 1 의 두가지 값을 표현할 수 있다. 메모리들은 매우 많은 비트로..

JavaScript/JS 2023.10.21

<script> async/ defer란? (스크립트 파일 동작, 로드시기 제어)

➡️ async와 defer를 제대로 이해하기 위해서는 HTML의 실행순서에 대한 이해가 선행되어야 한다. 이런 이해가 바탕에 있어야, 왜 굳이 async와 defer를 사용해야하는지 그 필요성에 대해서 알 수 있다. 🧷 선행학습 🔎 HTML의 문서파싱 순서와 동작원리 html은 기본적으로 위에서부터 아래로 태크를 해석한다. 위에서부터 태그를 해석하면서 돔트리를 형성한다. 그렇게 형성된 트리에 의해서 유저는 브라우저 화면을 통해서 개발자가 만든 화면을 볼 수 있다. 🕵️‍♀️ 발생가능 문제점 2가지 이러한 HTML의 성질때문에 문제가 발생할 수 있다. 위에서부터 순차적으로 태그를 파싱하므로 body태그의 위에 위치한 태그를 body보다 먼저 해석하기 시작한다. script태그가 모두 수행될때까지 아래로 ..

JavaScript/JS 2023.09.21

프로그래머스 문자열 내 p와 y의 개수 JS ( split()으로 특정 문자열 몇개 포함하는지 구하기 )

🧷 링크 문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 🙋‍♀️ 내 생각 대/소문자 구분이 없다는 가정이 있기때문에, 대문자나 소문자 하나로 통일하고 시작해야겠다고 생각했다. 'p'나 'y'를 얼마나 가지고 있는지는 filter()를 통해 조건을 거리고 length를 이용해서 길이를 구한다음, 비교한다. ✅ 내 코드 func..

프로그래머스 서울에서 김서방 찾기 JS ( findIndex(), indexOf(), 템플릿문자열 )

🧷 링크 문제 설명 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 🙋‍♀️ 내 생각 타입이 array인 seoul안에서 "Kim"이 몇번째에 위치하는지를 찾는 문제이다. array에서 특정 문자열의 index를 찾을 때 사용하는 메서드만 알면 풀기 쉬운 문제이다. ✅ 내 코드 function solution(seoul) { let location = seoul.findIndex(v=>v==="Kim") return `김서방은 ${location}에 있다` } 몇번째에 있는지 그 index만을 리턴하는 ..

프로그래머스 제일 작은 수 제거하기 JS ( findIndex(), splice() )

🧷링크 문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 🙋‍♀️ 내 생각 처음에 문제를 잘못생각해서 코드를 짜서 패쓰가 안되었는데, 잘못 생각한 이유는 아래와 같다. ❌ 잘못 생각한 코드 const arr2 = [...arr] arr2.sort((a,b)=>b-a).pop() return arr2.length ? arr2 : [-1] sort()를 이용해서 arr안에 들어있는 값들을 내림차순으로 정렬한 뒤, pop()을 통해 가장 마지막 값을 제거했다..

프로그래머스 두 정수 사이의 합 JS ( for문 / 가우스 합계)

🧷링크 문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 🙋‍♀️ 내 생각 a===b인 경우는 둘중 아무 수나 리턴하면 되기때문에 생각하기 어렵지 않다. a와 b사이의 값들을 더하기 위해서, for문을 사용해서 a와 b 사이라는 범위를 지정하고 그 안에서 1씩 더하거나 빼는을 써야겠다고 생각했다. (a=3, b=5이면 3부터 시작해서 5까지(범위), 3,4,5처럼 1차이 나게) 그런데 a가 더 클 경우와, b가 클 경우로 나뉘기 때문에 a===b일 경우를 제외하고는 a>b, b>a로 경우를 나누어서 어디부터 시작해서, 더할지 뺄지를 ..

window.location ( Web API란? / pathname, search, hash ... )

Web APIs에는 종류가 정말 많은데 오늘은 그 중 window.locaion에 대해 공부했다. 우선 window.location을 이해하기 위해서는 Web APIs가 무엇인지 이해하는 것이 필요하다. 🧷선행학습 web API란? 우선 mdn의 공식문서에는 위와 같이 정의되어있다. 개발하는 동안 사용할 수 있는 모든 API 및 interface(객체)를 의미한다. 웹 API를 이해하기 위해서는 또 API가 무엇인지를 알아야한다. 🧷선행학습 API란? API는 쉽게 말해서 설명서나 버튼같은 것이다. 그 안에 무엇이 들어있는지 자세하게 알지는 못해도, 이미 짜여있는 것들을 쉽게 꺼내어 쓸 수 있도록 도와주는 역할을 한다. ➡️ web API는 미리 브라우저에 내장되어있어서 개발자가 쉽게 꺼내어쓸 수 있는 ..

JavaScript/JS 2023.08.31

프로그래머스 자연수 뒤집어 배열로 만들기 JS

문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 🙋‍♀️ 내 생각 숫자를 하나하나 쪼개면서 배열에 담기위해서 split()을 사용해야겠다고 생각했다. split()은 string타입에 사용가능하므로 우선 타입을 string으로 만들어야한다. 그러고나서 split으로 쪼개면서 배열에 값을 하나하나 담고, 타입을 다시 number로 변경한 뒤, reverse()을 통해서 배열의 순서를 반대로 바꾼다. ✅ 내 코드 function solution(n) { return n.toString().split('').map(v=>Number(v)).reverse() } 우선, tostring()을 통해서 n의 값들을..