본문 바로가기

분류 전체보기

[백준 2579] 계단 오르기 (Java) https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 www.acmicpc.net 접근 방법 DP 방법으로 풀었으며, N번째 계단까지 올라올 때의 경우는 두가지가 있다. 첫 번째는 n-1 번째를 밟지 않고 온 경우 두 번째는 n-1 번째..
[백준 1463] 1로 만들기 (Java) https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 접근 방식 다이나믹 프로그래밍으로 생각하여 풀이하였다. 소스 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); int[] dp = new int[1000001]; dp[0] = 0; dp[1] = 0; for (int i = 2; i
[백준 1003] 피보나치 함수 (Java) https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 접근 방식 문제에서 C++ 코드를 제시한 것도 그렇고 정답 비율도 그렇고 전통적인 피보나치수열 구하는 코드로 풀기에는 의심스러운 것이 많은 문제였다. 시간 제한이 다른 문제들에 비해 많이 작은 것을 확인하고 다른 방식의 접근이 필요하다는 생각을 했다. f(n) = (f(n-1)의 f(0)개수와 f(1)개수의 합) * f(1) + (f(n-1)의 f(1)의 개수) * f(0) 이라는 점화식을 도출했다. 시간과 메모리 제한을 고려해서 주어지는 값이 40으로 크지 않기 때문에 바텀업 방식으로 미리 ..
[부스트코스] Browser Event, Event object, Event handler Event 브라우저에는 많은 이벤트가 발생한다. 브라우저 화면의 크기를 마우스로 조절할 때도, 스크롤을 할 때도, 마우스로 이동하거나 무언가를 선택할때도 이벤트가 발생한다. 이벤트를 브라우저가 발생시켜주니, 우리는 그 때 어떤 일을 하라고 할 일을 등록할 수 있다. 다시 말해, HTML 엘리먼트별로 어떤 이벤트가 발생했을 때 특정 행위를 하고 싶다면, 대상 엘리먼트를 찾고 어떤 일을 등록하면 된다. 이를 자바스크립트로 구현할 수 있다. 이벤트 등록 이벤트 등록 표준방법 - addEventListener() var el = document.getElementById("ouside"); el.addEventListener("click", function() { //do something }, false); ..
[부스트코스] DOM과 querySelector DOM 브라우저에서는 우리가 열심히 코딩한 HTML코드를 해석해 DOM(Document Object Model)이라는 객체 형태의 모델로 저장한다. 그렇게 저장된 정보를 DOM Tree라고 한다. 결국 HTML element는 Tree형태로 저장된다. 복잡한 DOM Tree를 탐색하기 위해 JavaScript로 탐색알고리즘을 구현하면 너무 힘들다. 그래서 브라우저에서는 DOM(document object model)이라는 개념을 통해서, 다양한 DOM API를 제공한다. 브라우저는 DOM Tree찾고 조작하는 걸 쉽게 도와주는 여러 가지 메서드를(DOM API)를 제공한다 . getElementById() ID정보를 통해서 엘리멘트를 찾는다. querySelector() DOM을 찾는데 특히 유용한 qu..
[부스트코스] 자바스크립트 window 객체(setTimeout) window객체 브라우저 개발을 하다보면, window라는 객체가 있다. window에는 많은 메서드들이 존재하며, 아래첨 사용할 수 있다. window는 디폴트에 개념임으로 생략 가능하다. window.setTimeout() setTimeout() // window는 전역객체라서 생략가능하다. setTimeout 활용 인자로 함수를 받고 있으며, 보통 나중에 실행되는 함수를 콜백함수라고도한다. 자바스크립트는 함수를 인자로 받을 수 있는 특징이 있다. 참고로 함수를 반환할 수도 있다. function run() { setTimeout(function() { var msg = "hello codesquad"; console.log(msg); //이 메시지는 즉시 실행되지 않습니다. }, 1000); } r..
[부스트코스] 자바스크립트 함수 호출 스택 함수 호출 아래 함수를 실행해보자. run이 호출되고 그 다음에 printName이 호출된다. // 함수의 호출. function printName(firstname) { var myname = "bell"; return myname + " ," + firstname; } function run(firstname) { firstname = firstname || "Youn"; var result = printName(firstname); console.log(result); } run('kim'); // bell, kim 함수호출과 Stack 메모리에서는 우측의 Call Stack에서와 같이 순서대로 쌓이게 된다. bar 함수에서 foo를 호출한 후 foo함수의 결과를 받아올 때 까지 bar함수는 메모리..
[부스트코스] 자바스크립트 함수 "자바스크립트 잘 이해하고 있다는 것" === "자바스크립트 함수를 잘 이해하고 있다" 함수의 선언 함수는 여러개의 인자를 받아서, 그 결과를 출력한다. 파라미터의 개수와 인자의 개수가 일치하지 않아도 오류가 나지 않는다. 파라미터가 1개일때, 인자의 갯수가 0개만 넣어 실행하면, 이미 정의된 파라미터는 undefined라는 값을 갖게 된다. 이는 변수는 초기화됐지만, 값이 할당되지 않았기 때문이다. // 함수의 호출. function printName(firstname) { return "name is" + firstname; } console.log(printName()); // 출력 결과 : name is undefined console.log(printName('bellroute')); // 출력..