본문 바로가기

분류 전체보기218

[C++] 백준 13549번: 숨바꼭질 3 문제 https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 규칙에 따라 특정 위치로 이동하는 최단시간을 찾는 숨바꼭질 문제 시리즈입니다. 문제에서 시작지점에 위치한 수빈이는 1초의 시간을 소모하여 +1 또는 -1 로 움직이거나, 0초의 시간을 소모하여 현재 인덱스의 두 배 지점으로 순간이동을 할 수 있습니다. 이동 방식의 가중치가 다르기 때문에 다익스트라를 사용하셔도 되고, 이 문제의 경우 단순 bfs로 해결할 수도.. 2021. 10. 7.
JavaScript의 프로토타입 (Prototype of JavaScript) 지난 글에서 상속과 클래스를 설명하며 프로토타입과 밀접한 관련이 있다고 언급했었습니다. 자바스크립트에서 프로토타입은 객체를 상속받기 위해 필요한 프로퍼티입니다. 지금 당장 개발자 도구를 켜고 아무 object 객체를 생성하여 객체의 속성을 확인해보면 [[prototype]] 이라는 속성을 갖고있는 것을 알 수 있습니다. 자바스크립트의 객체는 상속되는 속성과 메소드들을 객체의 생성자에 있는 [[prototype]] 에 정의합니다. 이 프로토타입 속성은 다른 상위 프로토타입 속성에게 또 다른 속성이나 메소드를 상속 받을 수 있습니다. 이러한 연쇄 과정을 프로토타입 체인이라고 부르며 자바스크립트는 이 프로토타입을 기반으로 동작하게됩니다. 프로토타입 체이닝 프로토타입 체이닝의 과정을 한 번 살펴보겠습니다. 하위.. 2021. 9. 27.
JavaScript의 클래스 (Class of JavaScript) 이번 시간에는 자바스크립트의 클래스 개념에 대해 알아보겠습니다. 객체지향 프로그래밍에서 클래스는 빼놓을 수 없는 개념이지만, 자바스크립트의 객체 체계는 이러한 클래스의 개념과 그리 잘 맞는 체계는 아니었습니다. 실제로 자바스크립트에 class라는 키워드가 명세에 추가된 것도 ES6가 되고 나서부터입니다. 결국 다른 언어들에서 지원하는 클래스와 자바스크립트의 클래스는 모양만 비슷할 뿐, 그 내부는 전혀 다른 방식으로 동작하고 있다는 것이죠. 사실 너무나 흔한 개념이라 인지하지 못하고 있는 경우가 많지만, 클래스 또한 디자인 패턴의 일종입니다. 처음부터 객체지향 프로그래밍을 염두한 자바와 같은 언어는 클래스가 모든 설계의 기본이 되는 개념이지만, 절차적 프로그래밍을 지원하는 다른 코드에선 딱히 클래스를 사용.. 2021. 9. 11.
[C++] BOJ 에서 정해지지 않은만큼의 입력을 받을 때 얼마 전부터 백준 온라인 저지에서 문제를 꾸준히 풀고 있었지만 알고리즘 관련한 포스팅은 되도록이면 나중으로 미루거나 안하려고 했는데, 입력 관련으로 문제를 겪어서 저처럼 헤매시는분이 계실까봐 기록합니다. BOJ 5639번 문제는 이진 검색 트리를 구성하는 요소들이 전위 순회 방식으로 주어지고, 이를 후위 순회 방식으로 컨버팅하는 문제입니다. 따라서 입력으로 요소들이 들어오게 되는데, 문제는 얼마만큼의 요소가 들어오는지 알 수 없다는 점입니다. 위처럼 10,000개 이하의 요소가 들어온다는 점만 알고 있을뿐, 각 케이스에 얼마 만큼의 요소가 들어오는지는 정확히 알 수 없기 때문에 입력이 더 이상 들어오지 않을때까지 계속해서 받아줘야합니다. 처음에는 cin.eof() 를 이용하여 문제를 해결하려고 하였으나 .. 2021. 8. 24.
JavaScript의 객체 - 2 (Object of JavaScript) 이전 포스팅에 이어서 객체의 속성에 대해 조금 더 알아보겠습니다. 지난 글에서 자바스크립트의 객체가 가진 프로퍼티들이 곧 객체의 특징들이 된다고 언급했었습니다. 이러한 프로퍼티들은 점(.)을 통해 접근하여 읽고 쓸 수 있었습니다. 하지만 모든 프로퍼티가 반드시 접근을 허용하고 있는 것은 아닙니다. 마치 private로 선언된 클래스의 멤버 변수처럼, 외부에서 접근하거나 수정할 수 없는 객체의 프로퍼티들도 존재합니다. 이를 통해 우리는 프로퍼티별로 접근 및 수정에 관한 속성들을 추가로 갖고 있다는 사실을 알 수 있습니다. 그럼 프로퍼티가 가진 속성들을 ES5부터 추가된 프로퍼티 서술자를 이용해 확인해보겠습니다. 프로퍼티 서술자 let obj = { val:1 }; Object.getOwnPropertyDe.. 2021. 8. 22.
SCPC 2021, UCPC 2021 참가 후기입니다. 이 글은 말 그대로 대회 참가 후 느낀 점을 적은 글입니다. 문제에 대한 해설이나 풀이는 없습니다. ( 저는 본선 진출에 실패하였습니다. ) 전역 후 처음으로 알고리즘 대회에 참가하였습니다. 이런 대회에 제대로 참가해보는건 17~18년쯤 이후로 처음인데, 그 덕분인지 처음 대회에 참가하는 기분이었고 꽤 긴장되었습니다. SCPC 2018, UCPC 2018 첫 대회 나란히 광탈ㅠㅠ 그래도 여름방학 기간동안 알고리즘 스터디를 진행하며 나름 꾸준히 문제도 풀어왔고, 참가를 했었던 경험도 있으니 조금이라도 발전이 있었으면 좋겠다는 마음과 함께 UCPC 2021, SCPC 2021 두 대회에 참여하였습니다. UCPC 2021 UCPC는 세 명의 대학생이 한 팀으로 참여하여 예선을 거쳐 본선이 진행되는 대회입니다... 2021. 8. 11.