전체 글
-
그리디 알고리즘 : 무지의 먹방 라이브 - 파이썬 (python)알고리즘/그리디 2021. 3. 23. 23:14
programmers.co.kr/learn/courses/30/lessons/42891 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr * 힙 설명 - 힙 자료구조는 우선순위 큐를 구현하기 위하여 사용하는 자료구조 중 하나 - 우선순위 큐는 우선순위가 가장 높은 데이터를 가장 먼저 삭제한다는 점이 특징 자료구조 추출되는 데이터 스택(Stack) 가장 나중에 삽입된 데이터 큐(Queue) 가장 먼저 삽입된 데이터 우선순위 큐(Priority Queue) 가장 우선순위가 높은 데이터 - 우선순위 큐는 데이터를 우선순위에 따라 처리하고 싶을 떄 사용 ex) 여러 개의 물건 데이터를 자료구조에 넣었다가 가치가 높은 물건 데이터부터 꺼내서 확인해야 하는 경우 - 대부분의 프로그래밍 언어에서..
-
그리디 알고리즘 : 문자열 뒤집기 - 파이썬 (python)알고리즘/그리디 2021. 3. 20. 17:50
- 입력 조건 첫째 줄에 0과 1로만 이루어진 문자열 S가 주어집니다. S의 길이는 100만보다 작습니다. - 출력 조건 첫째 줄에 다솜이가 해야 하는 행동의 최소 횟수를 출력합니다. 테스트케이스) 0001100 -> 1 * 방법1 아이디어: 전부 0으로 바꾸는 경우와 전부 1로 바꾸는 경우 중에서 더 적은 횟수를 가지는 경우를 계산한다. 예를 들어 문자열이 "0001100"이라고 가정하면 '모두 0으로 바꾸는 경우'의 횟수는 1이고 '모두 1으로 바꾸는 경우'의 횟수는 2이다. 두 값 중 적은 횟수인 1을 출력하면 된다. data = input() count0 = 0 #전부 0으로 바꾸는 경우 count1 = 0 #전부 1로 바꾸는 경우 #첫 번째 원소에 대해서 처리 if data[0] == '1': ..
-
그리디 알고리즘 : 곱하기 혹은 더하기 - 파이썬 (python)알고리즘/그리디 2021. 3. 20. 15:04
- 입력 조건 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어집니다. (1 210 * 방법1 아이디어: 숫자를 사용자로부터 입력받아 리스트로 변경한다. 초기 result 값을 0으로 설정하고 result 값이 0이거나 i 값이 0 또는 1이면 덧셈 연산을 수행한다. (어떤 숫자에 0이나 1을 곱한 값보다 0이나 1을 더한 값이 더 크기 때문) 이 경우가 아니라면 곱셈의 결과가 더 크기 때문에 곱셈을 수행한다. s = list(input()) # s = input() 도 가능 result = 0 for i in s: if result == 0: result += int(i) elif int(i) == 1: result += int(i) elif int(i) == 0: result += int(..
-
그리디 알고리즘 : 모험가 길드 - 파이썬 (python)알고리즘/그리디 2021. 3. 17. 17:26
* 방법1 (내림차순 정렬) → 오답 아이디어: 카드를 큰 수 부터 정렬한 후 그 숫자만큼씩 묶으면 된다고 생각했다. 예를 들어 N이 5이고 공포도가 2 3 1 2 2인 경우, 2 3 1 2 2를 내림차순으로 정렬하고 -> 3 2 2 2 1 3 2 2 / 2 1 3 2 2 를 그룹1로 묶어주고 2 1 을 그룹2로 묶어준다. 그룹1은 그룹 1에서 가장 큰 수인 3만큼 묶어주고 그룹2는 그룹 1을 제외한 리스트에서 가장 큰 수인 2만큼 묶어주었다. 직접 풀이한 방식이며 돌려본 테스트 케이스로는 방법2와 결과값이 모두 동일하게 나왔다. (수정) N=6이고 공포도가 4 3 3 3 3 2 인 경우 내림차순 정렬 4 3 3 3 / 3 2 -> result는 1인데 오름차순 정렬 2 3 / 3 3 3 / 4 -> r..
-
Java (5) - 상속웹개발/Java 2021. 2. 5. 17:23
* 상속 · 어떤 객체가 있을 때 그 객체의 필드(변수)와 메소드를 다른 객체가 물려받을 수 있는 기능 - 아래와 같은 경우에 속한다면 객체에 메소드를 추가하는 것이 어려움 1. 객체를 자신이 만들지 않은 경우 소스를 변경할 수 없음 2. 객체가 다양한 곳에서 활용되고 있는 경우 메소드를 추가하면 다른 곳에서는 불필요한 기능이 포함될 수 있음 · 기존의 객체를 그대로 유지하면서 어떤 기능을 추가하는 방법 -> 상속 즉, 기존의 객체를 수정하지 않으면서 새로운 객체가 기존의 객체를 기반으로 만들어지게 되는 것 · 기존의 객체는 기능을 물려준다는 의미에서 부모 객체가 되고 새로운 객체는 기존 객체의 기능을 물려받는다는 의미에서 자식 객체가 됨 · 부모 클래스와 자식 클래스의 관계를 상위(super) 클래스와..
-
Java (4) - 생성자웹개발/Java 2021. 2. 5. 17:04
* 생성자 setOperands가 항상 선행되어야 함 -> 개선: 생성자(Constructor) 사용 아래와 같이 인스턴스가 생성될 때, left, right 값을 입력하도록 강제 · 생성자 사용 전 Calculator c1 = new Calculator(); c1.setOperands(10, 20); c1.sum(); c1.avg(); · 생성자 사용 후 Calculator c1 = new Calculator (10, 20); c1.sum(); c1.avg(); · 클래스가 생성될 때 자동으로 클래스와 똑같은 이름을 가지고 있는 생성자가 실행되도록 약속되어 있음 · 생성자가 어떤 메소드보다 먼저 실행되도록 약속되어 있음 package org.opentutorials.javatutorials.constr..