전체 글 204

[모던 자바스크립트 Deep Dive] 07. 연산자

산술 연산자 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값 생성 산술 연산이 불가능한 경우 NaN 반환 피연산자의 개수에 따라 이항 산술 연산자와 단항 산술 연산자로 나눔 이항 산술 연산자 2개의 피연산자를 산술 연산하여 숫자 값 생성 피연산자의 값을 변경하는 부수 효과 X ⇒ 언제나 새로운 값 생성 +, -, *, /, % 단항 산술 연산자 1개의 피연산자를 산술 연산하여 숫자 값 생성 ++ (증가, 부수 효과 O) 전위 증가/감소 연산자 : 먼저 피연산자 값을 증가/감소시킨 후 다른 연산 수행 후위 증가/감소 연산자 : 먼저 다른 연산 수행 후, 피연산자 값 증가/감소 -- (감소, 부수 효과 O) + (아무 효과 X, 부수 효과 X) 숫자 타입이 아닌 피연산자에 + 단항 연산자를 사용하면..

[모던 자바스크립트 Deep Dive] 06. 데이터 타입

💡 자바스크립트는 7개의 데이터 타입으로 이루어져 있다. 이 타입들은 원시 타입과 객체 타입으로 분류할 수 있다 구분 데이터 타입 설명 구분 숫자 타입 숫자, 정수, 실수 구분 X 원시 타입 (primitive type) 문자열 타입 문자열 불리언 타입 논리적 참과 거짓 undefined 타입 var 키워드로 선언된 변수에 암묵적으로 할당되는 값 null 타입 값이 없다는 것을 의도적으로 명시할 때 사용되는 값 심벌 (symbol) 타입 ES6에서 추가된 7번째 타입 객체 타입 (object/reference type) 객체, 함수, 배열 등 숫자 타입 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따름 ⇒ 모든 수를 실수로 처리하며, 정수만 표현하기 위한 데이터 타입 존재 X 정수, 실수, 2진..

완주하지 못한 선수 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(participant, completion): players = dict.fromkeys(participant, 0) for player in participant: players[player] += 1 for player in completion: if player in players: players[player] -= 1 return sorted(players.items..

A로 B 만들기 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/120886 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(before, after): char_dict = dict.fromkeys(before, 0) for char in before: if char in char_dict: char_dict[char] += 1 for char in after: if char in char_dict: char_dict[char] -= 1 return 1 if all(e == 0 for e in..

[모던 자바스크립트 Deep Dive] 05. 표현식과 문

값 값 : 식이 평가되어 생성된 결과 var sum = 10 + 20; 변수 sum에 할당되는 것은 10+20이 아니라 평가된 결과인 숫자 값 30 ⇒ 10+20은 할당 이전에 평가되어 값을 생성 값을 생성하는 가장 기본적인 방법 : 리터럴 표기법 리터럴 리터럴 : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법 자바스크립트 엔진은 런타임에 리터럴을 평가해 값 생성 ⇒ 리터럴은 값을 생성하기 위해 미리 약속한 표기법 리터럴 종류 정수 리터럴 ex) 100 부동소수점 리터럴 ex) 10.5 2진수 리터럴 ex) 0b01000001 8진수 리터럴 ex) 0o101 16진수 리터럴 ex) 0x41 문자열 리터럴 ex) ‘hello’ , “world” 불리언 리터럴 ex) true,..

[모던 자바스크립트 Deep Dive] 04. 변수

변수란 무엇인가? 왜 필요한가? 변수는 프로그래밍 언어에서 데이터 관리를 위한 핵심 개념 컴퓨터는 CPU를 통해 연산하고, 메모리를 통해 데이터를 기억함 메모리 : 데이터를 기억하는 메모리 셀의 집합체 (메모리 셀 : 1바이트 (8비트)) 컴퓨터는 1바이트 단위로 데이터를 저장하거나 읽음 메모리 셀 : 고유의 메모리 주소를 가짐 메모리 주소 : 메모리 공간의 위치 연산 결과를 재사용하려면 저장된 메모리 공간에 직접 접근해야 됨 메모리 주소 직접 접근은 치명적 오류 발생 위험이 있음 ⇒ 값이 바뀌면 그 값과 연관된 값들이 모두 바뀔 수 있기 대문 ⇒ 기억하고 싶은 값을 메모리에 저장하고, 저장된 값을 읽어들여 재사용하기 위해 변수 사용 변수 : 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 ..

[모던 자바스크립트 Deep Dive] 03. 자바스크립트 개발 환경과 실행 방법

자바스크립트 실행 환경 자바스크립트는 브라우저 환경 또는 Node.js 환경에서 실행 가능 브라우저 : HTML, CSS, JS를 실행해 웹페이지를 브라우저 화면에 렌더링하는 것이 주된 목적 Node.js : 브라우저 외부에서 JS 실행 환경을 제공하는 것이 주된 목적 웹 브라우저 개발자 도구 크롬 브라우저에서 제공하는 개발자 도구의 기능 Elements : 로딩된 웹페이지의 DOM과 CSS를 편집해서 렌더링된 뷰를 볼 수 있음 Console : 로딩된 웹페이지의 에러를 확인하거나 JS 코드에서 작성한 console.log 메서드 실행 결과 확인 가능 Sources : 로딩된 웹페이지의 자바스크립트 코드 디버깅 Network : 로딩된 웹페이지 관련 네트워크 요청 정보와 성능 확인 가능 Applicati..

[모던 자바스크립트 Deep Dive] 02. 자바스크립트

자바스크립트의 탄생 1995년 웹페이지의 보조적인 기능을 수행하기 위해 탄생 (브라우저에서 동작하는 경량 프로그래밍 언어) 1996년 3월 모카 → 9월 라이브스크립트 → 12월 자바스크립트로 이름 변화 자바스크립트의 표준화 넷스케이프의 자바스크립트와 MS의 JScript가 있었는데, 넷스케이프와 MS 모두 자사 브라우저의 시장 점유율을 높이기 이해 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가하기 시작 ⇒ 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈 발생 1996년 11월 넷스케이프가 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구인 ECMA 인터내셔널에 자바스크립트의 표준화 요청 ⇒ 1997년 7월 자바스크립트는 ECMAScript로 명명 자바스크립트의 성장과 역..

[모던 자바스크립트 Deep Dive] 01. 프로그래밍

프로그래밍이란? 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션 프로그래밍 전에 요구사항을 명확히 이해한 후 적절한 문제 해결 방안을 정의해야 됨 ⇒ 문제 해결 능력 필요 요구사항을 명확히 이해하여 복잡함을 단순하게 분해 자료를 정리하고 구분 행위를 순서에 맞게 정함 정확하고 상세하게 요구사항을 코드로 설명 해결 과제를 작은 단위로 분해하고 패턴화해서 추출하며, 프로그래밍 내에서 사용될 모든 개념은 평가 가능하도록 정의 프로그래밍 언어 기계어로 직접 명령을 전달하는 것 대신에 프로그래밍 언어를 사용해 프로그램 작성 후 컴파일러나 인터프리터를 사용해 컴퓨터가 번역할 수 있게 함 프로그래밍 언어는 구문과 의미의 조합으로 표현됨 (syntax & semantics) 구문과 의미 // 문법적으로 문제가 없지만 의..

숨어있는 숫자의 덧셈 (2) (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/120864 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import re def solution(my_string): answer = 0 nums = re.findall(r'[0-9]+', my_string) for num in nums: answer += int(num) return answer 정규 표현식을 사용해 입력받은 문자열 내에서 숫자를 모두 찾고, 해당 배열을 돌며 각 숫자를 answer에 더해준 후 return 해주었다.