분류 전체보기

    백준 / 그리디 / 1744번 / 수 묶기 / Java

    1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net package BOJ.Greedy; import java.io.*; import java.util.*; public class _1744 { private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(Sy..

    일급객체, 일급함수

    1. 일급 객체란? 일급 객체란, 다음과 같은 조건을 만족하는 개체를 말한다. 변수나 데이터 구조 안에 담을 수 있다. 파라미터로 전달될 수 있다. 반환값으로 사용할 수 있다. 동적으로 프로퍼티 할당이 가능하다. 2. 일급 함수란? 일급 함수란, 일급 객체의 조건을 만족하는 함수를 의미한다. JS 에서는 함수가 일급 객체이다. 그 말은, JS에서는 다음과 같은 작업들이 가능하는 의미이다. 함수를 변수나 데이터 구조 안에 담을 수 있다. 함수는 파라미터로 전달될 수 있다. 함수는 반환값으로 사용할 수 있다. 사실 이렇게 글로 보면 이해가 잘 가지 않을 수도 있다. 하지만 JS를 사용해 코드를 짜본 사람이라면 어쩌면 이미 위의 개념들을 사용하고 있을 수도 있다. 각각의 예시를 보자. 1) 함수를 변수나 데이..

    호이스팅(Hoisting)

    1. 호이스팅이란? [ MDN - Hoisting ] 호이스팅 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN 자바스크립트 호이스팅은 인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트(import)의 선언문을 해당 범위의 맨 위로 이동시키는 과정을 말합니다. developer.mozilla.org 위 MDN 사이트에 따르면 호이스팅은 "인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트(import)의 선언문을 해당 범위의 맨 위로 이동시키는 과정" 이라고 한다. 위 정의를 읽고 "아 그냥 변수나 함수들을 맨 위에 갖다놓고 사용하는거구나~" 라고 생각하고 넘어갈 수도 있다. (나도 그랬다...) 하지만 '선언문' 이라는 키워드를 굳이 넣어야 했을까? 라는..

    백준 / 그래프 / 17471번 / 게리맨더링 / Java

    17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net package boj.p17471; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayDeque; import java.util.Deque; import java.util.LinkedList; import java.util.StringToken..

    백준 / 그래프 / 20058번 / 마법사 상어와 파이어스톰 / Java

    20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 다른 기능들은 그대로 구현하면 되어서 할만했지만, 오른쪽 90도 돌리는 기능에서 인덱스 접근때문에 계속 헤맸다. 손으로 그리면서 각 인덱스가 90도를 회전했을 때, 어떻게 바뀌는지 확인했더니 공식을 구할 수 있었다. package boj.p20058; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; i..

    Bundler

    번들러란? 한마디로 정리하자면, "의존성이 있는 모듈들을 하나로 합쳐주는 툴" 이라고 생각하면 될 것 같다. 우리는 JS 모듈을 사용하려면, HTML에서 태그로 우리가 작성한 JS 파일을 불러와야 했다. 한 JS 파일만 불러올 경우엔 상관없지만, 여러 JS 파일을 불러올경우엔 난감한 경우가 생길 수도 있다. 예를들어 A.js에서 작성한 A라는 모듈이 B.js에서 작성한 B라는 모듈과 관계가 있다고 해보자. (예를 들면 A에서 B를 참조한다던가 하는 상황) HTML 에선 이런 경우에 어떤 스크립트를 먼저 부르냐, 즉 어떤 스크립트를 부르는 태그를 먼저쓰냐에 따라 문제가 될 수도 있다. 서로 모듈들이 엮어있는 경우에 아직 선언이 되지않은 것을 참조한다거나 하면 예상치 못한 결과를 초래할 수 있기 때문이다. ..