전체 글149 동전 0 - 백준 11047번 동전 종류를 배열로 입력을 받는다. 오름차순으로 정렬되어있기 때문에 배열의 가장 끝인 배열[-1]의 값이 가장 큰 값이다. 동전을 최소한으로 사용하여 K를 만들어야하기 때문에 K에서 큰 값을 하나씩 빼주면서 카운팅해준다. 배열에 들어있는 수 중 가장 큰 수가 K보다 크면 배열.pop() 으로 삭제해준다. K값이 0이 될때까지 가능한한 큰 값의 동전으로 빼준다. n, k = map(int, input().split()) coin = [] c=0 for _ in range(n): coin.append(int(input())) while k>0: if coin[-1] 2022. 6. 23. 잃어버린 괄호 - 백준 1541 괄호를 적절히 배치하여 계산결과가 가장 작은 수가 나오도록 해야한다. "-" 가 나오면 다시 "-" 가 나올 때까지 괄호를 쳐서 계산을 해주면 가장 작은 수가 나올 수 있다. a = input() parsing = [] b = 1 # 1 : 덧셈, -1 : 뺄셈 j=0 num = '' for i in a: j+=1 if i !='-' and i!='+': num +=i elif i == '+' and b == 1: parsing.append(int(num)) num = '+' elif i == '+' and b == -1: parsing.append(int(num)) num = '-' elif i == '-': parsing.append(int(num)) num = '-' b = -1 if j == le.. 2022. 6. 22. 카드 정렬하기 - 백준 1715번 카드를 묶는 순서를 우선순위 큐로 생각하여 문제를 해결한다. 5 묶음의 카드가 10, 20, 30, 40, 50 장 있다고 생각해 보자 가장 작은 수 2개를 묶은 뒤 비교횟수에 더하고 다시 가장 작은 수 2개를 묶은 뒤 비교횟수에 더하는 행위를 카드 묶음이 1개가 남을 때 까지 반복해준다. 10 20 30 40 50 (묶기) result : 0 30 30 40 50 (묶기) result : 0 + 30 60 40 50 (묶기) result : 30 + 60 60 90 (묶기) result : 90 + 90 150 (묶기) result : 180 + 150 150 (완료) result : 330 파이썬의 heapq를 이용하면 이 과정 그대로 진행해주면 되고, 배열만 이용하여 문제를 해결하게 되면 3번째 부.. 2022. 6. 21. Codeforces Round #801 (Div. 2) A. Subrectangle Guess [문제설명] 철수와 영희는 n개의 행과 m개의 열로 이루어진 그리드에서 게임을 한다. 이 그리드 안에는 서로다른 정수들이 있다. i번째 행과 j번째 열에 있는 사각형은 (i, j)라고 표현할 수 있다. 철수는 h(1 2022. 6. 20. 단지번호붙이기 - 백준 2667번 문제에 설명에 나와있듯이 1은 집이 있는 곳을 나타내고 0은 집이 없는 곳을 나타낸다. x축과 y축을 그려서 각 집마다 좌표를 구한다. 집이 있는 좌표만 배열에 담아서 DFS를 통해 문제를 해결할 수 있다. n = int(input()) arr = [] for _ in range(n): p = input() arr.append(p) x = 0 y = 0 cordinate = [] for i in arr: for j in i: if j == '1': cordinate.append([x,y]) x+=1 y+=1 x=0 # print(cordinate) def search(mainList): # 입력받은 배열이 비어있으면 종료 if mainList == []: return 'end' villageCount =.. 2022. 6. 18. Educational Codeforces Round 130 (Div. 2)) A. Parkway Walk [문제설명] 공원에서 길을 걷는데 n+1개의 벤치가 있고 m단위 만큼의 에너지가 있다. 1m 걷는데 1단위의 에너지를 잃는다. 각 벤치 사이 거리가 정수로 n개만큼 주어진다. 벤치에서는 휴식을 취할 수 있다. 휴식을 취하면 원하는 에너지만큼 회복할 수 있다. 처음에 테이스 케이스가 주어진다. 테스트 케이스의 첫번째 줄은 벤치 사이의 거리가 몇개나 있는지(n+1 = 벤치 수), 출발 시 가지고 있는 에너지량(m)을 입력받는다. 테스트 케이스의 두번째 줄은 벤치 사이의 거리를 입력받는다. 각 테스트 케이스의 회복해야할 에너지의 최소량을 출력해야 한다. 문제를 해결하기 위해서 가장 끝 벤치까지 가는데 필요한 총에너지에서 현재 가지고 있는 에너지를 빼주면 된다. 첫번째 벤치에서 미리 에너지를 모두 모은다음에 출.. 2022. 6. 13. 자료구조 - 허프만 코드 신문에 실린 기사를 분석하여 각 글자들의 빈도수를 분석하여 이 기사의 내용을 압축하기위해 고안된 알고리즘이다. 이진 트리를 사용하여 빈도수가 높은 글자에 적은 용량을 부여하고 빈도수가 적은 글자에는 큰 용량을 부여하는 과정이다. 글자마다 용량을 부여한다는 의미는 우리가 흔히 사용하는 아스키 코드를 사용하지 않고 글자 빈도수를 이용한 효율적인 새로운 엔코딩 비트열을 만드는 것을 의미한다. 압축하고 싶은 문자열 : AABACDDFAABBBBACCEEEE 빈도수 A : 6 B : 5 C : 3 D : 2 E : 4 F : 1 각 알파벳의 고정 길이 코드 A : 000 B : 001 C : 010 D : 011 E : 100 F : 101 각 알파벳의 가변 길이 코드를 허프만코드를 통해 직접 구해보도록 하자. .. 2022. 6. 12. 자바 - 오버로딩 vs 오버라이딩 상속에서 사용되는 오버라이딩(overriding)과 클래스에서 메소드를 만들 때 사용되는 오버로딩(overloading)은 이름이 비슷하여 햇갈릴 수 있다. 오버로딩 overloading 한 클래스 내에서만 사용된다. 메소드의 이름이 동일하지만 매개변수의 순서, 개수, 타입 등의 요소 중 한개이상 달라야 한다. 오버라이딩 overriding 상속관계에서 사용되는 개념이다. 부모로부터 상속받는 메소드를 재정의하는 의미를 지닌다. 메소드의 이름이 같고 매개변수의 순서, 개수, 타입 등의 요소 모두 같아야 한다. 접근제한이 부모의 메소드보다 강력해서는 안된다.(같거나 낮아야 한다) class A{ public void M(){ System.out.println("부모"); } } class B extends .. 2022. 6. 10. 세션과 쿠키 12장 세션과 쿠키 HTTP의 비연결지향이라는 특성 덕분에 서버 리소스 낭비를 줄일 수 있지만 매 통신마다 새로 커넥션을 만들어야 하는 불편함이 있다. 매 통신마다 클라이언트를 확인해야하는 불편함을 줄이고자 쿠키와 세션이 등장하였다. 쿠키 클라이언트에 로컬에 파일로 저장되는 키와 값이 들어있는 데이터파일 서버에 접속을 하고 끊을 때 클라이언트에 로컬에 쿠키를 남긴다. 쿠키를 통해 클라이언트를 인식하고 클라이언트를 재인식하는 기존의 복잡한 과정을 생략한다. 클라이언트의 로컬에 저장되기 때문에 보안에는 취약하다. 유효 기간을 넉넉하게 주면 클라이언트가 따로 쿠키를 삭제하지 않는 한 브라우저가 종료되어도 오랫동안 인증이 유지된다. 세션 쿠키와 마찬가지로 클라이언트를 재인식하는 기존의 복잡 과정을 생략하기 위해.. 2022. 6. 8. 자바 - 기타 제어자 final 제어자 최종적인 값을 갖고 있는 필드 = 값을 변경할 수 없는 필드 public class Person{ final String nation = "Korea"; final String ssn; //아래에있는 메소드가 없어지면 오류발생 String name; public Person(String ssn, String name){ // 아래 두줄은 위에 nation을 선언해준것과 같은 기능을 해준다. this.ssn = ssn; this.name = name; } } 생성자는 final 필드의 최종 초기화를 마쳐야 하는데, 만약 초기화되지 않은 final 필드를 그대로 남겨두면 컴파일 에러가 발생한다. final 필드의 초기값을 줄 수 있는 방법 2가지 필드 선언시에 주는 것이 제일 간단 생성자로.. 2022. 5. 25. 자바 - 메소드 오버로딩 메소드 오버로딩이란 클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것 같은 이름의 메소드를 중복하여 정의하는 것. 메소드 오버로딩의 특징 이름은 같더라도 매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메소드를 여러개 작성해도 된다. 메소드에 사용되는 이름을 절약할 수 있다. 메소드를 호출할 때 전달해야 할 매개변수의 타입이나 개수에 대해 크게 신경을 쓰지 않고 호출할 수 있다. 객체지향 프로그래밍의 특징중 하나인 다형성을 구현하는 방법 메소드 오버로딩조건 1. 메소드의 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. // 1. num1 그대로 출력 void display(int num1) // 2. 두 정수의 곱 출력 void display(int num1, int n.. 2022. 5. 24. 자바 - 기본 생성자 참고자료 : http://www.tcpschool.com/java/java_methodConstructor_constructor 자바의 모든 클래스는 하나 이상의 생성자가 정의되어 있어야 한다. 하지만 생성자를 정의하지 않아도 인스턴스를 생성할 수 있다. 자바 컴파일러가 기본 생성자를 자동으로 만들어주는 기능이 있기 때문이다. 기본 생성자는 매개변수를 하나도 가지지 않으며, 아무런 명령어도 포함하고 있지 않다. class Car{ private String carName = "Modle X"; public String carCrash() { return this.carName; } } public class main { public static void main(String[] args) { Car wh.. 2022. 5. 17. 이전 1 ··· 8 9 10 11 12 13 다음