분류 전체보기93 1.4.2 변수의 유효 범위, 스코프 1.4.2 변수의 유효 범위, 스코프 변수의 유효 범위를 스코프(scope)라고 하는데, 자바스크립트에는 다양한 스코프가 있음. 전역 스코프 전역 레벨에 선언하는 것을 전역 스코프(global scope)라고 함. 이 스코프에서 변수를 선언하면 어디서든 호출할 수 있게 됨. 브라우저 환경에서 전역 객체는 window, Node.js 환경에서는 global이 있는데, 이 객체에 전역 레벨에서 선언한 스코프가 바인딩됨. var global = 'global scope' function hello() { console.log(global) } console.log(global) // global scope hello() // global scope console.log(global === window.glob.. 2024. 4. 9. 1.4.1 클로저의 정의 1.4.1 클로저의 정의 클래스형 컴포넌트에 대한 이해가 자바스크립트의 클래스, 프로토타입, this에 달려있다면, 함수형 컴포넌트에 대한 이해는 클로저에 달려 있음. 함수형 컴포넌트의 구조와 작동 방식, 훅의 원리, 의존성 배열 등 함수형 컴포넌트의 대부분의 기술이 모두 클로저에 의존하고 있기 때문. 클로저 리액트에서 함수형 컴포넌트와 훅이 등장한 16.8 버전을 기점으로 클로저라는 개념이 리액트에서 적극적으로 사용되기 시작함. MDN에서 정의를 찾아보면 "클로저는 함수와 함수가 선언된 어휘적 환경(Lexical Scope)의 조합"이라고 돼있음.. 정의가 난해함 // 어휘적 환경이란? function add() { const a = 10 function innerAdd() { const b = 20 .. 2024. 4. 9. 최댓값과 최솟값 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 정렬을 하자 배열로 만들자 띄어쓰기로 구분되어있으니 split 일단 숫자로 만들고 정렬 map, lambda로 숫자로 만들자 📖 내 코드 def solution(s): answer = sorted(list(map(lambda x : int(x), s.split()))) return str(answer[0]) + " " + str(answer[-1]) 📑 다른 사람의 풀이 def solution(s): s = list(map(int,s.split())) return str(min(s)) + " " + .. 2024. 4. 8. JadenCase 문자열 만들기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 첫 문자 대문자로 만들고 나머지 소문자로 만드는 capitalize() 함수를 알고 있음 공백문자가 연속으로 나올 수 있는 것 인지 그럼 split()으로 그냥 나누는게 아니라 split(' ')로 공백도 저장해놓아야함 lambda 사랑맨 우짤... ' '.join()으로 합치기 📖 내 코드 def solution(s): return ' '.join(list(map(lambda x : x.capitalize(), s.split(' ')))) 📑 다른 사람의 풀이 def Jaden_Case(s): re.. 2024. 4. 8. 최솟값 만들기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 제일 작은 거 x 제일 큰 거 하면 그나마 제일 작은 값 됨 각각 정렬해서 누적값 구하면 될 듯 📖 내 코드 def solution(A, B): A = sorted(A) B = sorted(B, reverse = True) answer = 0 for i, j in zip(A, B): answer += i*j return answer 📑 다른 사람의 풀이 def solution(A, B): return sum(a*b for a, b in zip(sorted(A), sorted(B, reverse = T.. 2024. 4. 8. 이진 변환 반복하기 💡 생각 문자열에서 0 제거하면서 count로 개수 세놓기 전체 이진변환한 횟수도 세기 길이 c를 2진법으로 표현한 문자열 2진법으로 변환할 때 bin을 사용하게 되면 0b... 형태로 나오므로 [2:] 요걸 추가해줘야 숫자 부분만 구할 수 있다 📖 내 코드 def solution(s): total_count = 0 zero_count = 0 while s != "1": total_count += 1 zero_count += s.count("0") s = str(bin(len(s.replace("0",""))))[2:] return total_count, zero_count 📑 다른 사람의 풀이 def solution(s): a, b = 0, 0 while s != '1': a += 1 num = s.c.. 2024. 4. 8. 올바른 괄호 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 스택으로 "(" 쌓고 ")" 나왔을 때 빼고 하면 될 거 같은데.. 시간 초과남 숫자로 "(" 개수만큼 ")"가 존재하는 지 확인 "(" 없이 ")"가 나와버리면 바로 False 리턴 📖 내 코드 def solution(s): stack = 0 for i in s: if stack < 0: return False if i == "(": stack += 1 else: stack -= 1 return stack == 0 📑 다른 사람의 풀이 x = 0 for w in s: if x < 0: break x.. 2024. 4. 8. 숫자의 표현 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 문제 읽으면서 흐름대로 코드를 짜보면 def solution(n): answer = 0 for j in range(1, n+1): _sum = 0 for i in range(j, n+1): _sum += i if _sum == n: answer += 1 return answer 디져버린 효율성 테스트.. 어떻게 하면 시간복잡도를 줄일 수 있을까 반복문을 한 번만 써야대나 엥 걍 누적합이 n보다 커지면 break 해주면 댐 📖 내 코드 def solution(n): answer = 0 for j in .. 2024. 4. 8. 피보나치 수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 재귀함수 쓰면 시간초과나는 걸 이미 아는 상태.. 배열을 사용해야하는 게 머리에 박혀있음 F = [0, 1] 로 만들어놓고 끝에서 두 수를 합친 값을 배열에 넣어주는 식으로 진행 📖 내 코드 def solution(n): F = [0, 1] for i in range(n): F.append(F[i] + F[i+1]) return F[n]%1234567 📑 다른 사람의 풀이 간단한 문제라 좋은 풀이가 따로 없는 듯 2024. 4. 8. 다음 큰 숫자 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 이진법으로 변환하는 bin과 문자열 등에서 특정 문자열 개수를 구할 수 있는 count를 사용하면 쉬울 것 같다 📖 내 코드 def solution(n): one_count = bin(n).count('1') while True: n += 1 if one_count == bin(n).count('1'): return n 📑 다른 사람의 풀이 간단해서 딱히 좋은 풀이법을 못 찾겠다 2024. 4. 8. 1.3.2 클래스와 함수의 관계 1.3.2 클래스와 함수의 관계 클래스, 프로토타입 클래스는 ES6에서 나온 개념으로, ES6 이전에는 프로토타입을 활용해 클래스의 작동 방식을 동일하게 구현할 수 있었음. 반대로 말하면, 클래스가 작동하는 방식은 자바스크립트의 프로토타입을 활용하는 것이라고 볼 수 있음. 클래스의 코드를 바벨에서 트랜스파일하면 다음과 같이 변환됨. // 클래스 코드 class Car { constructor(name) { this.name = name } honk() { console.log(`${this.name}이 경적을 울립니다!`) } static hello() { console.log('저는 자동차입니다') } set age(value) { this.carAge = value } get age() { retur.. 2024. 4. 8. 카펫 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 생각 갈색 타일의 개수는 아래와 같은 패턴을 가진다 (노란색 타일 뭉치 가로 + 노란색 타일 뭉치 세로) x 2 + 4 (brown-4) / 2 = r(노란색 타일 뭉치 가로) + c(세로) 그리고 (가로)x(세로)는 노란색 타일의 개수 r * c = yellow c = yellow // r # c가 자연수 마지막으로 전체 타일의 크기는 (노란색 타일 가로 + 2) x (노란색 타일 세로 + 2) 📖 내 코드 def solution(brown, yellow): for r in range(1, yellow+.. 2024. 4. 4. 이전 1 2 3 4 5 ··· 8 다음