LeetCode, 자바스크립트) Rotate image
·
개발/알고리즘(코딩테스트)
문제 Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]Output: [[7,4,1],[8,5,2],[9,6,3]]Input: matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]Output: [[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]] You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise).접근노가다는 무조건 아닐거 같고, 어떠한 공식이 있을거 같은데... 시도해 보았으나 실패했다.구글링의 도움을 받음 핵심은 90도 시계방향 회전 = 전치(transpose) + 각 행..
LeetCode, 자바스크립트) Valid Sudoku
·
개발/알고리즘(코딩테스트)
문제https://leetcode.com/problems/valid-sudoku/ 9x9 수도쿠 보드가 유효한지 판단하십시오. 채워진 셀만 다음 규칙에 따라 검증하면 됩니다:각 행은 1-9의 숫자를 중복 없이 포함해야 합니다.각 열은 1-9의 숫자를 중복 없이 포함해야 합니다.그리드의 아홉 개의 3x3 하위 상자 각각은 1부터 9까지의 숫자를 중복 없이 포함해야 합니다. 참고:(부분적으로 채워진) 스도쿠 보드가 유효할 수는 있지만 반드시 풀 수 있는 것은 아닙니다.언급된 규칙에 따라 유효성을 검사해야 하는 것은 채워진 셀들뿐입니다.Input: board = [["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","..
LeetCode, 자바스크립트) Move Zeroes
·
개발/알고리즘(코딩테스트)
문제https://leetcode.com/problems/move-zeroes/description/ 정수 배열 nums가 주어졌을 때, 0인 모든 요소를 배열의 끝으로 이동시키되, 0이 아닌 요소들의 상대적 순서는 유지해야 합니다.배열의 복사본을 만들지 않고, 원본 배열을 직접 수정하는 방식으로 이 작업을 수행해야 합니다.Input: nums = [0,1,0,3,12]Output: [1,3,12,0,0]접근제자리 > 추가로 배열을 생성할 수는 없음배열을 순회하면서 0을 만나면 뒤로 보낸다.const moveZeroes = function(nums) { let left = 0; // 다음 0이 아닌 요소가 올 위치 for (let right = 0; right
프로그래머스, 자바스크립트) 다음 큰 숫자
·
개발/알고리즘(코딩테스트)
다음 큰 숫자https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제풀이조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.잔머리 안 굴리고 순수 계산을 진행하면, n + 1 을 진행하며 2진수의 1갯수가 같아질때까지 계산하면 된다.function nextBigNumber(n) { const countOnes = (x) => x...
자바스크립트의 제어문
·
기술/JavaScript
제어문제어문은 프로그램 흐름을 바꾸거나, 조건에 따라 특정 코드를 반복하거나 건너뛰게 하는 문법입니다. 1. 블록문 {} 중괄호로 묶은 것{ // 여러 줄의 코드를 묶을 때 사용 // 변수의 스코프(유효 범위)를 구분할 때도 사용됨} 2. 조건문조건에 따라 코드 실행합니다.if, else if, else참 또는 거짓 조건을 걸때 주로 사용합니다.if (조건) { // 조건이 true일 때 실행} else if (다른 조건) { // 위 조건이 false이고, 이 조건이 true일 때 실행} else { // 모든 조건이 false일 때 실행}//중괄호 {}는 문장이 1개일 때 생략 가능if (num > 0) kind = "양수"; // 중괄호 생략 가능else kind = "음수 또는 0";sw..
자바스크립트 연산자(Operators)
·
기술/JavaScript
자바스크립트 연산자(Operators)란?연산자는 변수나 값에 대해 계산, 비교, 논리적 판단, 대입 등을 할 때 사용하는 기호입니다.ex) +, -, *, >, ===, && 등 주요 연산자 종류1. 산술 연산자 (Arithmetic)숫자를 계산할 때 사용합니다.기호설명예시+더하기2 + 3 → 5-빼기5 - 2 → 3*곱하기3 * 2 → 6/나누기10 / 2 → 5%나머지7 % 2 → 1**거듭제곱2 ** 3 → 8이항 산술 연산자두 개의 값(피연산자)을 계산해서 새로운 값을 만들어내는 연산자원래 값은 바뀌지 않고, 새로운 값이 만들어집니다. +,-,*,/, …단항 산술 연산자하나의 값만 계산하는 연산자입니다. ++ -- + - 2. 문자열 연결 연산자+ 연산자는 숫자끼리 더할 수도 있고, 문자열과 만..
프로그래머스, 자바스크립트) 2021 카카오 채용연계형 인턴십- 숫자 문자열과 영단어
·
개발/알고리즘(코딩테스트)
숫자 문자열과 영단어https://school.programmers.co.kr/learn/courses/30/lessons/81301 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이일단 숫자와 매칭되는 문자를 알려주기 위해 Map을 하나 만든다.그 다음은 replace 함수로 정규식을 이용해 해당 문자가 있다면 매칭되는걸 찾아 변환시켜준다.최종적으로는 숫자형으로 변환해야 하니 + 연산자로 형변환 시켜 반환한다.//숫자-문자 매칭const numberMap = { zero: "0", one: "1", two: "2", three: "3", four: "4", five: "5", six: "6", ..
자바스크립트의 '동적 타이핑'과 '형 변환'에 대하여
·
기술/JavaScript
자바스크립트는 동적 타이핑 언어입니다.✅ 변수를 선언할 때 타입을 정하지 않아도 되고,✅ 값을 넣는 순간 타입이 자동으로 정해집니다.✅ 나중에 다른 타입의 값으로 바꾸는 것도 가능합니다. 정적 타이핑 언어는 선언한 타입에 맞는 값만 할당할 수 있습니다.//정적 타이핑 언어char c; //선언한 타입에 맞는 값만 할당int num; //변수 선언 시점에 변수 타입이 결정되고 변경할 수 없음num = "hello"; // ❌ 오류 발생 (타입 불일치) 반면에, 동적 타이핑 언어는 타입 변경이 가능합니다.//동적 타이핑 언어let value = 10; // 숫자로 시작value = "hello"; // 나중엔 문자열로 변경!value = true; // 불린 값으로도 변경 가능..
자바스크립트의 데이터 타입
·
기술/JavaScript
자바스크립트에서 다루는 모든 값에는 자료형(타입)이 있습니다.자료형은 값의 종류와 특징을 정의하고, 컴퓨터가 그 값을 어떻게 처리할지 결정하는 데 사용됩니다. Q. 데이터 타입이 왜 중요할까?값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해값을 참조할 때 한 번에 읽어야 할 메모리 크기를 정하기 위해메모리에 저장된 2진수를 어떤 데이터로 해석할지 결정하기 위해→ 예: 01000001을 문자로 보면 'A', 숫자로 보면 65 1. 원시 타입(Primitive Type)값 자체가 하나로 구성되어 있고, 변하지 않는(immutable) 데이터입니다.원시 타입은 값 자체를 저장하며, 복사 시 값이 복사됩니다.타입설명 number 정수, 소수, NaN, Infinity 등 모든 숫자 string ..
변수 선언 방식과 var, let, const 의 차이를 알아보자
·
기술/JavaScript
변수 선언자바스크립트에서는 var, let, const 로 변수를 선언할 수 있습니다.var score;score = 80;자바스크립트는 변수 선언을 두 단계로 처리합니다:선언 단계: 변수 이름을 등록하고, 메모리에 공간을 준비합니다.초기화 단계: 값을 넣기 전에 임시로 undefined를 자동으로 넣어둡니다.❗ 초기화를 해두는 이유는, 전에 쓰던 쓰레기 값이 남아있지 않게 하기 위해서 입니다. var / let / const 비교 표항목varletconst스코프함수 스코프블록 스코프블록 스코프재선언 가능 여부가능불가능 (같은 스코프 내에서)불가능 (같은 스코프 내에서)재할당 가능 여부가능가능불가능호이스팅 여부O (초기화 없이 undefined로 됨)O (하지만 TDZ로 인해 오류 발생)O (하지만 TD..