분류 전체보기 46

[Algorithm/Python] 이진 탐색 트리 순회 방법(전위 / 중위 / 후위 순회)

트리 이진 탐색배열 내부의 데이터가 정렬되어 있을 때 사용할 수 있는 알고리즘.탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 특징이 있다. 이진 탐색을 할때는 시작점, 끝점, 중간점 3개의 변수를 사용한다.# 이진탐색소스코드 구현(재귀함수)def binary_search(array, target, start, end): if start > end: return None mid = (start + end) // 2 # 찾은 경우 중간점 인덱스 반환 if array[mid] == target: return mid # 중간점의 값보다 찾고자 하는 값이 작은 경우 왼쪽 확인 elif array[mid] > target: return binary_search(array, target, sta..

[프로그래머스 1단계] 크기가 작은 부분 문자열

https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(t, p): answer = 0 subStr = [t[i: i+len(p)] for i in range(0, len(t)-len(p)+1)] for j in subStr : if(int(j)  파이썬 슬라이스와 List Comprehensions를 활용하였다.List Comprehensions을 사용하니 코드가 간결하다.

[Python] List Comprehensions 알아보기

파이썬에서는 리스트를 더 간결하고 간편하게 만들기 위해 List Comprehension라는 것을 사용할 수 있다. 기본 구조[식 for 변수 in iterable]식(expression): 리스트에 추가될 새로운 요소변수(item): 반복적으로 가져오는 변수iterable: 반복 가능한 객체(리스트, 튜플, 집합 등)a = [i*2 for i in range(10)]print(a) if 조건문 사용[식 for 변수 in iterable if 조건문]a = [i*2 for i in range(10) if i%2 == 0]print(a) 다중 반복문[식 for 변수 in iterable for 변수2 in iterable2]a = [(x, y) for x in [1,2,3] for y in [3,1,4] ..

Python 2024.06.30

[JavaScript] 함수 정의(함수 선언문, 함수 표현식, Function 생성자, 화살표 함수)

함수란 작업을 수행하거나 값을 계산하는 등의 과정을 표현하고 이를 하나의 블록으로 감싸서 실행 단위로 만들어 놓은 것을 의미한다. 자바스크립트에서는 함수를 크게 4가지 방법으로 정의한다. 함수 선언문자바스크립트에서 함수를 선언할 때 가장 일반적으로 사용하는 방식function(a, b) { return a + b} 함수 표현식다음 예제처럼 함수는 표현식으로도 사용할 수 있다.const sum = function (a, b) { return a + b}sum(10, 24) // 24💡 일급 객체 : 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체 함수는 다른 함수의 매개변수나 반환값이 될 수 있고 위 예제처럼 할당도 가능하다. -> 일급 객체가 되이 위한 조건을 함수는 모두 갖췄음! 함수..

JavaScript 2024.06.30

[JavaScript] var, let, const 비교 (+ 호이스팅 이해하기)

ES6에서 let, const가 도입되기 이전까지는 var 키워드를 통해 변수를 선언하였다.하지만 var 키워드의 여러 문제점 때문에 이 문제점들을 보완하기 위해 let과 const가 등장한 것인데,var의 문제점은 무엇이고 var, let, const 세 키워드의 차이점과 여기서 쓰이는 개념인 호이스팅에 대해 알아보자. var 키워드 사용의 문제점1. 중복 선언 가능var a = 10;var a = 30;console.log(a); // 30var는 중복으로 선언이 가능하다. 동일한 이름의 변수를 선언해도 에러가 발생하지 않기에 의도치 않은 문제가 발생할 수 있다.2. 함수 레벨의 스코프스코프란, 변수가 사용될 수 있는 영역이라고 보면 된다.var 키워드로 선언한 변수는 함수의 코드 블록을 지역 스코프..

JavaScript 2024.06.28

[프로그래머스 1단계] 카드 뭉치

https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(cards1, cards2, goal): answer = '' inCards1Count = 0 inCards2Count = 0 subGoal = [] for i in range(0, len(goal)): if(goal[i] in cards1) : subGoal.append(cards1[inCards1Count]) ..

[React] ReactNode / ReactElement / JSX.Element 의 차이

프로젝트 태스크를 진행하다가 children 타입을 React.ReactElement; 로 두고 태스크 완성한 걸 PR에 올려두었다. 여기서 받은 다른 팀원 분의 질문요기 ReactNode가 아니라 ReactElement로 타입 좁혀놓으신 이유가 있을까용? 이 질문을 보면서 ReactNode와 ReactElement의 차이를 제대로 설명을 할 수 있어야겠다고 생각하여 공부하면서 이 포스트에 정리해보겠다. children의 타입으로 사용하는 타입에는 크게 ReactNode와 ReactElement가 있다.  ReactNode-> 클래스형 컴포넌트의 리턴값에 해당ReactNode는 JSX에서 children으로 전달될 수 있는 모든 타입을 가질 수 있다.string, number, boolean, null,..

React 2024.06.25

[프로그래머스 1단계] 가장 가까운 글자

https://school.programmers.co.kr/learn/courses/30/lessons/142086 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(s): answer = [] checkArr = '' for i in s : if i in checkArr : a = checkArr.rfind(i); checkArr += i; b = checkArr.rfind(i); num = b - a;..

[Python] reverse와 reversed의 차이

프로그래머스 문제를 푸는 중 reversed를 사용하면서 발견한 reverse와 reversed의 차이가 뭔지 궁금해져서 정리를 해보았다. 공식 문서에는 어떻게 분리되어 있는지 봤더니reverse() -> 리스트 객체의 메서드reversed() -> 파이썬의 내장 함수 이처럼 정의를 했다. 결론적으로, reverse는 리스트에서만 사용할 수 있고 다른데서 사용하면 AttributeError가 날 것이다. reversed는 두 가지 형태로 반환한다.tuple과 str에서 사용할 때 -> reversed 객체 반환list에서 사용할 때 -> listreverseiterator 객체 반환

Python 2024.06.24

[프로그래머스 1단계] 푸드 파이트 대회

https://school.programmers.co.kr/learn/courses/30/lessons/134240 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr def solution(food): answer = '' subAnswer = '' for i in range(1, len(food)) : eatingCount = food[i] // 2; if(eatingCount > 0): answer += str(i) * eatingCount subAnswer += str(i) *..