본문 바로가기

반응형

분류 전체보기

(107)
그리디: 백준 15881 파이썬 문제: https://www.acmicpc.net/problem/15881 15881번: Pen Pineapple Apple Pen 여러 개의 사과, 파인애플, 그리고 펜이 일렬로 세워져 있다. 이 물건들의 순서를 바꾸지 않고 옆에 있는 물건끼리 연결했을 때, 펜-파인애플-애플-펜을 몇 개나 만들 수 있을지 세어보자. 단, 펜, www.acmicpc.net 풀이: n = int(input()) arr = list(input()) arr.extend([0] * 1000000) i, cnt = 0, 0 while(i < n): if(arr[i] == 'p' and arr[i+1] == 'P' and arr[i+2] == 'A' and arr[i+3] == 'p'): arr[i+3] = 0 cnt += 1 i..
JavaScript: 프로토타입과 클래스 자바스크립트에서 프로토타입의 역할은 function 키워드로 객체 생성자를 만들고, 그 객체 생성자를 new 키워드를 통해 만든 다른 객체들끼리 공유할 수 있는 어떠한 값이나 함수를 prototype에 넣어주는 것이다. 클래스(Class)가 없는 자바스크립트에서 프로토타입(Prototype)의 개념은 아주 중요하다. 여기서는 아주 간단하게만 알아보고 나중에 더 자세하게 알아보자. function Animal(type, name, sound) { this.type = type; this.name = name; this.sound = sound; } Animal.prototype.say = function () { console.log(this.sound); }; Animal.prototype.sharedV..
JavaScript: 배열 내장함수 (forEach, map, indexOf, findIndex, find, filter, splice, splice, shift, pop, unshift, push, concat, join, reduce) 1. forEach 배열 안에 있는 원소들을 가지고 어떤 작업을 일괄적으로 하고 싶을 때, forEach문을 사용해 간결한 코드를 작성할 수 있다. const superheroes = ['아이언맨', '캡틴 아메리카', '토르', '닥터 스트레인지'] for(let i = 0; i { console.log(hero); }); 더 나아가 화살표(arrow) 함수를 사용할 수도 있다. 2. map map 함수는 배열안의 모든 원소를 변환할 때 사용한다. const array = [1, 2, 3, 4, 5, 6, 7, 8]; const squared = []; for (let i = 0; i < array.length; i++) { squared.push(array[i] * array[i]); } consol..
그리디: 백준 1434 파이썬 문제: https://www.acmicpc.net/problem/1434 1434번: 책 정리 첫째 줄에 박스의 개수 N, 책의 개수 M이 주어진다. 둘째 줄에는 박스의 용량 A1, A2, ..., AN이 주어지고, 셋째 줄에는 B1, B2, ..., BM이 주어진다. www.acmicpc.net 풀이: N, M = map(int, input().split()) A = list(map(int, input().split())) B = list(map(int, input().split())) A.extend([0] * 1000) B.extend([1001] * 1000) result = 0 i = 0 j = 0 while(i = B[j]: A[i] = A[i] - B[j] j += 1 continue pri..
그리디: 백준 18238 파이썬 문제: https://www.acmicpc.net/problem/18238 18238번: ZOAC 2 2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해 www.acmicpc.net 해설: 아스키코드 값을 이용해서 문제를 풀었다. 왼쪽/오른쪽으로 원판을 돌리는 경우를 모두 생각해서 그중에 작은 수를 계속해서 더 한다. A ~ Z를 리스트에 모두 추가하여 구할 수도 있다. 반성: 내가 어려움을 겪었던 점은 정방향이 아닌 역방향으로 갈 때 어떻게 처리를 해야 하는지에 대한 부분이다. 고민을 하다가 결국 구글링을 해보았고 해결 방법은 음수가 될 경우, 26을..
Getter와 Setter 함수 객체 안에 Getter 함수와 Setter 함수를 설정할 수 있다. Getter 함수는 함수 앞에 get이라는 키워드를, Setter 함수는 함수 앞에 set이라는 키워드를 붙여 선언한다. Getter 함수는 특정 값을 조회하려고 할 때 사용한다. get 함수 안의 특정 코드를 실행하고 연산된 값을 받아 리턴을 하는 형식이다. Getter 함수는 리턴이 반드시 있어야 한다. Setter 함수는 set이라는 키워드를 붙여 함수를 선언한다. Setter함수는 파라미터로 무조건 어떤 값을 설정해 주어야 한다. 똑같은 이름의 Getter 함수와 Setter 함수를 넣어줄 수 있다. 또 다른 예를 들어보자. 다음과 같이 Getter 함수와 Setter 함수를 사용할 수 있다. 만약 이를 하나의 Getter 함수만..
그리디: 백준 11034 파이썬 캥거루 세마리2 ( https://www.acmicpc.net/problem/11034 ) 답: 헷갈렸던 부분은, 주어진 입력이 여러개의 테스트 케이스로 이루어져 있다는 것이었다. 예제 처럼 좌표를 총 두 세트씩 입력하게 하니까 틀렸다고 나왔다. 그래서 구글링을 참고해 try, except문을 사용했다. 여러개의 테스트 케이스가 입력으로 주어지면 try, except문 사용을 기억하자.
그리디: 현재 상황에서 가장 좋아 보이는 것만을 선택하는 알고리즘 그리디 알고리즘은 단순하지만 강력한 문제 해결 방법이다. 이 알고리즘 유형은 국내 알고리즘 교재에서 단어 그래도 번역하여 '탐욕 법'으로 소개된다. 이름에서 알 수 있듯이 어떠한 문제가 있을 때 단순 무식하게, 탐욕적으로 문제를 푸는 알고리즘이다. 여기서 탐욕적이라는 말은 '현재 상황에서 지금 당장 좋은 것만 고르는 방법'을 의미한다. 코딩 테스트에서 만나게 될 그리디 알고리즘의 문제 유형은 앞으로 다루게 될 알고리즘과 비교했을 때 '사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형'이라는 특징이 있다. 정렬, 최단 경로 등의 알고리즘 유형은 그 알고리즘의 사용 방법을 정확히 알고 있어야만 해결 가능한 경우가 많다. 그리디 알고리즘 유형의 문제는 아주 다양하기 때문에 암기한다고 해서 항상 ..

반응형