본문 바로가기

분류 전체보기93

영어 끝말잇기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 배열 읽으면서 1) 잘못 이어서 틀린 사람 2) 같은 단어 중복해서 틀린 사람 찾으면 되는데 1번의 경우, 앞 단어의 마지막 글자와 뒷 단어의 첫 글자를 비교하면 되고 2번의 경우, 지금 인덱스 전까지의 배열에서 같은 단어가 존재하는지 count로 검사해 찾아보면 될 것 같다 가장 먼저 탈락하는 사람의 번호 : (걸린 인덱스) % n(사람 수) + 1 그 사람이 자신의 몇 번째 차례에 탈락하는지 : (걸린 인덱스) // n(사람 수) + 1 📖 내 코드 def solution(n, words): an.. 2024. 4. 4.
짝지어 제거하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 ❌ 입력 문자열의 길이만큼 while 돌려놓고 그 안에서 for 돌면서 같은 문자가 연속되는지 검사, 연속된다면 반복 문자열이 빠진 새로운 문자열 만들고 for 탈출, 다음 while로 넘어가서 만들어진 새로운 문자열로 for 돌면서 같은 문자 연속되는지 검사 반복 1. 탈출했는데 기존 문자열과 만들어진 문자열이 같다 = 더 이상 지울 게 없음 return 0 2. 만들어진 문자열이 비어있다 = 다 지워짐 return 1 3. 둘 다 아님 = 다음 while문 돌기 def solution(s): # .. 2024. 4. 4.
구명보트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 combinations의 경우 시간 초과, 메모리 초과 실패가 난다 어떻게 접근해야할까... 탐욕 알고리즘 쓰라고 떡하니 써있는데 뭔지 몰라 쓰질 못하는 멍청한 인간 ㅎㅎ 질문하기 흘끔 보고 deque로 풀 수 있는 걸 봤음 ❌ 우선 제일 무거운 애부터 뺄 거기 때문에 people 배열을 큰 순서대로 정렬하고 이를 데크 dq로 만든다. 몇 번 왔다갔다 해야하는지 표시할 answer 정수 플래그를 만든다. dq가 존재하는 동안, 제일 무거운 애와 제일 가벼운 애의 합이 limit 보다 큰 경우 제일 무.. 2024. 4. 4.
N개의 최소공배수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 최소공배수는 수들의 배수 중 공통이 되는 가장 작은 숫자이므로 배열에서 가장 큰 수보다 커야한다. 배열의 모든 수들로 나누어 떨어져야 한다. 배열의 마지막 수까지 나누어 떨어지는 경우 그 수를 리턴한다. 📖 내 코드 def solution(arr): _max = max(arr) while True: for i in range(len(arr)): if _max % arr[i] == 0: if i == len(arr) - 1: return _max else: _max += 1 break 📑 다른 사람의 .. 2024. 4. 4.
1.3.1 클래스란 무엇인가? 1.3.1 클래스란 무엇인가? 클래스 의미: 특정한 객체를 만들기 위한 일종의 템플릿과 같은 개념. 즉, 특정한 형태의 객체를 반복적으로 만들기 위해 사용. 활용: 객체를 만드는 데 필요한 데이터나 이를 조작하는 코드를 추상화해 객체 생성을 더욱 편리하게 할 수 있음 클래스가 나오기 이전(ES6)에는 클래스라는 개념이 없어 객체를 만드는 템플릿 같은 역할을 함수가 했음. 반대로 말하면, 자바스크립트에서 클래스로 하는 모든 것들을 함수로도 동일하게 표현할 수 있음 // 클래스 예제 // Car 클래스 선언 class Car { // constructor는 생성자. 최초에 생성할 때 어떤 인수를 받을지 결정할 수 있으며, // 객체를 초기화하는 용도로도 사용 constructor(name) { this.na.. 2024. 4. 4.
기술 스택 JavaScript React Next.js Redux-toolkit MUI System JavaScript 선정 이유 개발 생산성: TypeScript는 정적 타입 체계를 도입하여 개발 시간을 늘리는 경우가 있습니다. 반면 JavaScript는 타입 시스템의 추가 부담 없이 빠르게 개발을 진행할 수 있습니다. 팀 구성원의 경험 및 선호도: 팀원들이 TypeScript보다 JavaScript에 대한 많은 경험을 가지고 있고 이에 더 익숙합니다. TypeScript에 대해서는 학습 시간이 필요하지만, 이를 위한 시간을 보장받을 수 없었고 이에 따라 프로젝트 초기 단계에서의 생산성이 감소될 것을 우려했습니다. 생태계 지원 및 라이브러리 사용: JavaScript는 방대한 생태계와 다양한 라이브러리를 보유하고.. 2024. 4. 2.
1.2.4 함수를 만들 때 주의해야 할 사항 1.2.4 함수를 만들 때 주의해야 할 사항 함수의 부수 효과를 최대한 억제하라 함수의 부수 효과(side-effect)란 함수 내의 작동으로 인해 함수가 아닌 함수 외부에 영향을 끼치는 것을 의미 이러한 부수 효과가 없는 함수를 순수 함수라 하고, 부수 효과가 존재하는 함수를 비순수 함수라고 함 즉, 순수 함수는 부수 효과가 없고, 언제 어디서나 어떠한 상황에서든 동일한 인수를 받으면 동일한 결과를 반환해야 함. 그리고 이러한 작동 와중에 외부에 어떠한 영향도 미쳐서는 안됨 function PureComponent(props) { const { a, b } = props return {a + b} } 위 컴포넌트는 앞선 기준에 따라 순수한 함수형 컴포넌트로 분류할 수 있음. props의 값을 기준으로 .. 2024. 4. 2.
1.2.3 다양한 함수 살펴보기 1.2.3 다양한 함수 살펴보기 즉시 실행 함수 Immediately Invoked Function Expression, IIFE 함수를 정의하고 그 순간 즉시 실행되는 함수 단 한 번만 호출되고, 다시금 호출할 수 없는 함수 (function (a, b) { return a + b })(10, 24); // 34 ((a, b) => { return a + b }, )(10, 24) // 34 한 번 선언하고 호출된 이후부터는 더 이상 재호출이 불가능. 그래서 일반적으로 즉시 실행 함수에 이름 붙이지 않음 장점) 글로벌 스코프를 오염시키지 않는 독립적인 함수 스코프를 운용할 수 있음. 함수의 선언과 실행이 바로 그 자리에서 끝나기 때문에 즉시 실행 함수 내부에 있는 값은 그 함수 내부가 아니고서는 접근이.. 2024. 4. 2.
1.2.2 함수를 정의하는 4가지 방법 1.2.2 함수를 정의하는 4가지 방법 함수 선언문 자바스크립트에서 함수 선언할 때 가장 일반적으로 사용하는 방식 function add(a, b) { return a + b } 함수 선언문은 표현식이 아닌 일반 문(statement)으로 분류됨(\표현식: 무언가 값을 산출하는 구문. 즉, 함수 선언으로는 어떠한 값도 표현되지 않았으므로 표현식이 아닌 일반 문) const sum = function sum(a, b) { return a + b } sum(10, 24) // 34 함수 선언문은 말 그대로 '선언'이고 어떠한 값도 표현하지 않으므로 표현식과는 다르게 변수에 할당할 수 없는 것이 자연스러워 보임 BUT!! 가능함 이유) 자바스크립트 엔진이 코드의 문맥에 따라 동일한 함수를 문이 아닌 표현식으로.. 2024. 4. 2.
1.2.1 함수란 무엇인가? 1.2.1 함수란 무엇인가? 자바스크립트에서 함수 자바스크립트에서 함수란 작업을 수행하거나 값을 계산하는 등의 과정을 표현하고, 이를 하나의 블록으로 감싸서 실행 단위로 만들어 놓은 것 의미 function sum(a, b) { // sum: 함수명 // 입력값 a, b: 매개변수 return a + b // 반환값 } sum(10, 24) // 34 // 10, 24 : 인수 리액트에서 컴포넌트 리액트에서 컴포넌트를 만드는 함수도 이러한 기초적인 형태를 따름 function Component(props) { return {props.hello} } Component 함수를 선언하고 매개변수로는 일반적으로 props라고 부르는 단일 객체를 받으며 return 문으로 JSX를 반환 일반적인 함수와의 차이점.. 2024. 4. 2.
1.1.4 리액트에서의 동등 비교 1.1.4 리액트에서의 동등 비교 리액트에서 사용하는 동등 비교는 ==나 ===가 아닌 Object.is Object.is는 ES6에서 제공하는 기능이기 때문에 리액트에서는 이를 구현한 폴리필(Polyfill)을 함께 사용(웹 개발에서 기능을 지원하지 않는 웹 브라우저 상의 기능을 구현하는 코드) objectIs 아래는 리액트에서 실제로 값을 비교할 때 사용하는 코드// flow로 구현돼 있어 any가 추가돼 있음. flow에서 any는 타입스크립트와 동일하게 어떠한 값도 받을 수 있는 타입을 의미함 function is(x: any, y: any) { return ( (x === y && (x !== 0 || 1 / x === 1 / y) || (x !== x && y !== y) // eslint-d.. 2024. 3. 29.
1.1.3 자바스크립트의 또 다른 비교 공식, Object.is 1.1.3 자바스크립트의 또 다른 비교 공식, Object.is Object.is Object.is는 두 개의 인수를 받으며, 이 인수 두 개가 동일한지 확인하고 반환하는 메서드임 ==나 ===와 다른 점 == vs. Object.is: == 비교는 같음을 비교하기 전에 양쪽이 같은 타입이 아니라면 강제로 형변환(type casting)을 한 후에 비교함. 하지만 Object.is는 이러한 작업하지 않음. 즉, ===와 동일하게 타입이 다르면 그냥 false === vs. Object.is: 아래처럼 Object.is가 좀 더 개발자가 기대하는 방식으로 정확하게 비교 -0 === +0 // true Object.is(-0, +0) // false Number.NaN === NaN // false Obje.. 2024. 3. 29.