분류 전체보기
[백준 알고리즘] 1463번 1로 만들기, 파이썬(python)
[백준 알고리즘] 1463번 1로 만들기, 파이썬(python)
2021.08.031463, 1로 만들기 📁 문제 출처 https://www.acmicpc.net/problem/1463 💡 생각 n을 3으로 나누기 -> 안 나눠지면 -1 해주고 3으로 나누기 -> 이것도 안되면 2로 나눠주기 -> 안되면 -1 진행 오답 n = int(input()) count = 0 while n != 1: if n % 3 == 0: n //= 3 count += 1 elif (n-1) % 3 == 0: n //= 3 count += 2 elif n % 2 == 0: n //= 2 count += 1 else: n -= 1 count += 1 print(count) 위와 같은 아이디어를 세웠지만 틀렸다. 이 문제는 DP로 접근해야 한다. bottom-up방식과 dp에는 연산 횟수를 저장해줘야 하는 힌..
[백준 알고리즘] 1406번 에디터, 파이썬(python)
[백준 알고리즘] 1406번 에디터, 파이썬(python)
2021.07.311406, 에디터 📁 문제 출처 https://www.acmicpc.net/problem/1406 💡 생각 index를 사용해서 커서의 위치를 컨트롤하여 작업을 수행해야겠다는 아이디어를 떠올림 시간 초과가 발생 도저히 생각이 안 나서 스택 2개를 가지고 풀이한 것을 참고. s2은 deque를 사용하여 왼쪽에서 원소를 넣었다 뺄 수 있게 하였다. ❌ 틀린 코드 import sys words = list(sys.stdin.readline().strip()) n = int(sys.stdin.readline()) index = len(words) for i in range(n): order = sys.stdin.readline().strip().split() if order[0] == "P": words.ins..
[백준 알고리즘] 1373번 2진수 8진수, 파이썬(python)
[백준 알고리즘] 1373번 2진수 8진수, 파이썬(python)
2021.07.311373, 2진수 8진수 📁 문제 출처 https://www.acmicpc.net/problem/1373 💡 생각 내장 함수를 안 쓰고 단순 계산으로 풀기로 결심 2진수 -> 8진수 2진수의 숫자를 3자리씩 묶기(앞쪽 부분 모자라면 0으로 채우기) 3자리씩 묶은 숫자에 2진수의 자리값을 곱하기 곱한 값을 더하면 8진수 위 방법으로 코드로 구현했지만 자꾸 틀린다... 뭘까..ㅋㅋㅋ 무튼 내장 함수 짱.. 🛠 나의 코드 n = int(input(), 2) # 10진법으로 변경 print(format(n, 'o')) # oct 8진법으로 변경 ✔️ 배운 점 및 주의할 점 다른 방식으로 풀어도 시간 초과가 발생했다. 내장 함수로만 풀어야지 통과가 되는 것일까...? 결론은 내장 함수의 편리함을 깨달았다. 121..
[자바스크립트] 함수의 prototype 프로퍼티
[자바스크립트] 함수의 prototype 프로퍼티
2021.07.16함수의 prototype 프로퍼티 let animal = { eats: true }; function Rabbit(name) { this.name = name; } Rabbit.prototype = animal; let rabbit = new Rabbit("White Rabbit"); // rabbit.__proto__ == animal alert( rabbit.eats ); // true Rabbit.prototype = animal은 "new Rabbit을 호출해 만든 새로운 객체의 [[Prototype]]을 animal로 설정하라."라는 것을 의미한다. 가로 화살표는 일반 프로퍼티인 "prototype"을, 세로 화살표는 [[Prototype]]을 나타낸다. 세로 화살표는 rabbit이 animal..
[자바스크립트] 프로토타입 상속
[자바스크립트] 프로토타입 상속
2021.07.16프로토타입 상속 "user의 메서드를 복사하거나 다시 구현하지 않고 user에 약간의 기능을 얹어 admin과 guest 객체를 만들 수 있지 않을까"를 프로토타입 상속을 이용해서 구현할 수 있다. [[Prototype]] 자바스크립트의 객체는 [[Prototype]]이라는 숨김 프로퍼티를 갖는다. 이 숨김 프로퍼티 값은 null이거나 다른 객체에 대한 참조가 되는데, 다른 객체를 참조하는 경우 참조 대상을 '프로토타입(prototype)'이라 부른다. object에서 프로퍼티를 읽으려고 하는데 해당 프로퍼티가 없으면 자바스크립트는 자동으로 프로토타입에서 프로퍼티를 찾는다. 이러한 동작 방식을 '프로토타입 상속'이라고 부른다. // [[Prototype]] 프로퍼티는 내부 프로퍼티이면서 숨김 프로퍼티이지..
[자바스크립트] getter와 setter
[자바스크립트] getter와 setter
2021.07.15프로퍼티 getter와 setter 객체의 프로퍼티 종류 데이터 프로퍼티(data property) 지금까지 사용한 모든 프로퍼티이다. 접근자 프로퍼티(accessor property) 이 함수는 값을 획득(get)하고 설정(set)하는 역할을 담당한다. getter와 setter 접근자 프로퍼티는 'getter(획득자)'와 ‘setter(설정자)’ 메서드로 표현된다. 객체 리터럴 안에서 getter와 setter 메서드는 get과 set으로 나타낼 수 있다. let obj = { get propName() { // getter, obj.propName을 실행할 때 실행되는 코드 }, set propName(value) { // setter, obj.propName = value를 실행할 때 실행되는 코..
[자바스크립트] 다시 보는 화살표 함수
[자바스크립트] 다시 보는 화살표 함수
2021.07.15화살표 함수 화살표 함수는 단순히 함수를 ‘짧게’ 쓰기 위한 용도로 사용되지 않는다. 자바스크립트에선 함수를 생성하고 그 함수를 어딘가에 전달하게 되면 함수의 컨텍스트를 잃을 수 있다. 이럴 때 화살표 함수를 사용하면 현재 컨텍스트를 잃지 않는다. 화살표 함수에는 'this’가 없다! 화살표 함수엔 this가 없기 때문에 외부에서 값을 가져온다. let group = { title: "1모둠", students: ["보라", "호진", "지민"], showList() { this.students.forEach( student => alert(this.title + ': ' + student) // 1모둠: 보라, 1모둠: 호진, 1모둠: 지민 ); } }; group.showList(); forEac..
[자바스크립트] JSON.stringify(value), JSON.parse()
[자바스크립트] JSON.stringify(value), JSON.parse()
2021.07.13JSON과 메서드 Client와 Server와 통신하기 위해서는 XMLHttpRequest, fetch() API를 사용해서 통신할 수 있다. XML 많이 사용되지 않고 JSON을 많이 사용한다. JavaScript Object Notation (JSON)은 Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다. 웹 애플리케이션에서 데이터를 전송할 때 일반적으로 사용한다. JSON은 문자열 형태로 존재한다. 데이터를 주고받을 때 쓸 수 있는 가장 간단한 파일 포맷이다. 텍스트를 기반으로한 가볍고 가독성이 좋다. key와 value로 이루어져 있다. 데이터를 서버와 주고받을 때 직렬화를 위해서 사용한다. 프로그래밍 언어나 플랫폼에 상관없이 사용할 수 있다. JSON ..
[자바스크립트] 타이머 관련 메소드(setTimeout, clearTimeout, setInterval), 중첩 setTimeout
[자바스크립트] 타이머 관련 메소드(setTimeout, clearTimeout, setInterval), 중첩 setTimeout
2021.07.12타이머 메소드, 중첩 setTimeout setTimeout, clearTimeout, setInterval에 기본 개념은 이전 포스팅에서 참고할 것 중첩 setTimeout /** setInterval을 이용하지 않고 아래와 같이 중첩 setTimeout을 사용함 let timerId = setInterval(() => alert('째깍'), 2000); */ let timerId = setTimeout(function tick() { alert('째깍'); timerId = setTimeout(tick, 2000); // (*) }, 2000); 일정 간격을 두고 실행하는 방법에는 setInterval과 중첩 setTimeout이 있다. 중첩 setTimeout을 사용하면 호출을 원하는 방식으로 조정..
[CSS] Flexbox 총정리
[CSS] Flexbox 총정리
2021.07.10Flexbox란? 서로 다른 크기의 화면과 기기에서도 HTML 요소들이 자동으로 재 정렬되어, 웹 페이지의 레이아웃을 언제나 똑같이 유지할 수 있게 해준다. 요소의 사이즈가 불명확하거나 동적으로 변화할 때에도 유연한 레이아웃을 실현할 수 있다. 플렉스 박스(flex box)는 플렉스 컨테이너(flex container)와 플렉스 요소(flex item)로 구성된다. container에 적용할 수 있는 속성 값 display flex-direction flex-wrap flex-flow justify-content align-items align-content itm에 적용되는 속성 값 order flex-grow flex-shrink flex align-self The flex model main axi..
[자바스크립트] 변수의 유효범위와 클로저
[자바스크립트] 변수의 유효범위와 클로저
2021.07.10변수의 유효 범위와 클로저 자바스크립트는 함수 지향 언어이다. 함수를 동적으로 생성할 수 있고, 생성한 함수를 다른 함수에 인수에 넘길 수 있으며, 생성된 곳이 아닌 곳에서 함수를 호출할 수 있다. 중첩 함수 function sayHiBye(firstName, lastName) { // 헬퍼(helper) 중첩 함수 function getFullName() { return firstName + " " + lastName; } alert( "Hello, " + getFullName() ); alert( "Bye, " + getFullName() ); } 함수 내부에서 선언한 함수는 ‘중첩(nested)’ 함수라고 부른다. 중첩 함수는 새로운 객체의 프로퍼티 형태나 중첩 함수 그 자체로 반환될 수 있다. 이..
[자바스크립트] Array.from(), 배열로 만들어주기
[자바스크립트] Array.from(), 배열로 만들어주기
2021.07.10Array.from() 유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운Array 객체를 만든다. 기본 문법 Array.from(arrayLike[, mapFn[, thisArg]]) 매개변수 arrayLike 배열로 변환하고자 하는 유사 배열 객체나 반복 가능한 객체. // String에서 배열 만들기 console.log(Array.from('foo')); //["f", "o", "o"] // Set에서 배열 만들기 const s = new Set(['foo', window]); console.log(Array.from(s)); // ["foo", window] // Map에서 배열 만들기 const m = new Map([[1,..