본문 바로가기

분류 전체보기

(386)
프로그래머스 - 파괴되지 않은 건물(C++, 누적합 응용) https://school.programmers.co.kr/learn/courses/30/lessons/92344?language=cpp 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 오늘 현대 오토에버 코딩테스트를 봤는데 누적합을 통해 지정 범위의 숫자들이 몇번 사용되었는지 확인해야하는 문제가 나왔다.누적합을 사용하면 효율적으로 풀 수 있는 문제였지만 난 생각해내지 못했다.. 아이디어는 다음과 같다. [1~ 7][3~8][4~9]  1~10각 자릿수가 아래 범위에 몇번 들었는지 확인하려고 한다. 그렇다면 가장 쉬운 방법은 각 숫자들을 범위와 대조하면 된다 ..
Java의 객체 정렬과 객체 우선순위 큐 난 C++를 사랑하는데... 기업들은 C++를 사랑하지 않는다..ㅠㅠ 그래서 코딩테스트를 준비해야하기 때문에 요즘 자바로 C++로 풀었던 것들을 다시 풀고있다. 그러다가 개인적으로 자바에서 가장 불편한 부분이 바로 정렬과 우선순위큐 였는데 이번 기회에 한번에 정리하고 가겠다. 예제는 강의실 배정 문제이다. 이 문제는 아주 베이직하게 정렬과 우선순위큐를 활용해야하는 문제이기 때문에 가져왔다. 예제31 33 42 3 -> 여기서 정렬했을 땐  1 33 42 3 순으로 나와야하고 세개가 모두 우선순위큐에 있다면 3 41 32 3 순서로 나와야한다. Comparator 와 Comparable 의 차이잠시 영어시간을 가져보면 전자는 비교자, 후자는 비교할수있는? 이런 뜻이다. 그러니까 전자는 실제 sort 함수에..
백준 1474번 - 밑 줄(java, 그리디, 구현) https://www.acmicpc.net/problem/1474 무슨말인지 잘 모르겠는 문제인데 해석만하면 그렇게 어려운 문제는 아니다. 그러나 문자열을 다루는데 익숙하지 않다면 조금 어려울 수도 있다. 사전순으로 앞에 온다는 의미를 잘 해석해야하는데 나도 이것을 잘 못해서 이게 왜 실버1이지 싶었다. 사전순이란 AABBBAAABB  -> AAABB 가 먼저온다. 즉, 밑줄 보다 우선순위가 높은 대문자 앞에는 밑줄이 되도록 오지 않는 것이 좋다. AAA_BBaaAA_ABBaa -> AAA_BBaa 가 먼저온다.   AAA_BBaaAAABBa_a -> AAABBa_a 가 먼저온다  이제 느낌이 올것이다. 문자열을 탐색하며 먼저 소문자 앞에 밑줄들을 추가하고 만약 더 이상 소문자가 없다면 뒤쪽에 있는 대문..
백준 1477번 - 휴게소 세우기 (Java) https://www.acmicpc.net/problem/1477 이분탐색임을 알고 들어갔는데도 뭘 이분탐색으로 잡아야할지 까다로운 문제. 체킹하는 부분도 만만치 않다. 이 문제의 핵심은 각 휴게소와 휴게소 사이에 거리를 이분탐색의 매개변수로 잡는 것이다. 1번    2번                   3번 세개의 휴게소가 있을 때 1번과 2번의 차이가 100이라하고 2번과 3번의 거리가 200이라하자. 만약 현재 매개변수가 70이면 1번과 2번 사이에는 1개, 2번과 3번 사이에는 2개를 지을 수 있다. 그러나 지을 수 있는 휴게소의 개수가 2개라면 70 에서 90정도로 늘려서 진행해볼 수 있다. 이 문제는 휴게소의 최소거리를 매개변수로 잡기 때문에 파라매트릭 서치로 만약 지을 수 있는 휴게소가 지금..
JavaScript - var, let , const 차이 최근 자바스크립트를 공부하면서 세개의 차이가 궁금해졌다. const의경우는 다른 언어들에도 많은 한 번 결정되면 절대 변하지 않는 변수임을 당연히 알고 있다. var과 let의 차이는 뭘까? 1. 범위 function varScope() { if (true) { var x = 10; } console.log(x); // 10 - 함수 스코프를 가지므로 접근 가능}function letScope() { if (true) { let y = 10; } console.log(y); // ReferenceError - 블록 스코프를 가지므로 접근 불가}varScope();letScope(); var는 함수 범위를 가지기 때문에 블록을 벗어나도 접근이 가능하..
JavaScript - 자바스크립트의 클래스 자바스크립트는 특이하다.. 클래스를 구성하는데 클래스의 구성원들을 컨스트럭터(생성자)에서 결정한다. class Korean { constructor(name, age) { this.name = name; this.age = age; this.country = 'Korea'; } addAge(age) { return this.age + age; }} 그리고 자바스크립트 답게 메소드의 형식은 지정할 필요가 없고 private public 이 없다. 기본적으로 모두 public 이다.하지만 함수 앞에 #을 붙이면 프라이빗을 정의된다. 메소드 이름 앞에 #이라니 조금 생소하다..!! class Pet { constructor(name, age) { console..
javascript - 객체 정렬 개발을 하다보면 가장 많이 쓰이는 함수가 정렬이 아닐까 싶다.그리고 정렬은 각 언어들마다 조금씩 쓰는 법이 달라서 이번 기회에 자바스크립트의 정렬에 대해 정리하고자 한다. const user = [ { name: '홍길동', age: 40 }, { name: '임꺽정', age: 12 }, { name: '주몽', age: 23 }, { name: '척준경', age: 88 },];// 나이순 오름차순const result1 = user.sort((a, b) => a.age - b.age); console.log('result1: ', result1);/* { name: '임꺽정', age: 12 }, { name: '주몽', age: 23 }, { name: '홍길동', age: 4..
JavaScript - 고차함수(map, fill, reduce) 자바스크립트는 함수형 프로그래밍에 알맞은 언어라고 한다. 그리고 자바스크립트를 이렇게 만들어주는 요소가 JavaScript의 고차개념이다. 고차함수는 자바스크립트에서 광범위하게 사용되며 이것을 모른다면 자바스크립트 개발자라할 수 없다. 함수형 프로그래밍이란, 함수를 다른 함수의 파라미터로 넘길 수 있고(!!) 반환값으로 함수(!!)를 받을 수 있는 프로그래밍 형태이다. C/C++ 같은 고전파와 비교가 안되는 유연함이다. Java 진영 또한 점진적으로 함수형 프로그래밍을 위해 고차함수를 받아들이는 추세이다. 자바스크립트는 함수를 객체로 받아들이기 때문에 위와 같은 행동들이 가능하다. 리턴값으로 넘긴다던가, 파라미터로 받는다던가. 그래서 다음과 같은 행위가 가능하다. const square = functio..