분류 전체보기 137

[Greedy알고리즘] 11047번 동전 0

문제풀이 n, k = map(int, input().split()) m = [] num = 0 for i in range(n): m.append(int(input())) for i in range(n - 1, -1, -1): if k == 0: break if m[i] > k: continue num += k // m[i] k %= m[i] print(num) N, K = map(int,input().split()) arr = [int(input()) for _ in range(N)] cnt, idx = 0, N-1 while K > 0: if arr[idx] > K: idx -= 1 else: cnt += K//arr[idx] K %= arr[idx] print(cnt) 해설 그리디 알고리즘을 사용한다..

백준/problems 2022.08.07

그리디 알고리즘

탐욕 알고리즘(Greedy Algorithm)이란? Greedy는 ‘탐욕스러운, 욕심 많은’ 이란 뜻이다. 탐욕 알고리즘은 말 그대로 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법이다. 탐욕 알고리즘은 최적해를 구하는 데에 사용되는 근사적인 방법이다. 탐욕 알고리즘은 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달한다. 탐욕 알고리즘 문제를 해결하는 방법 선택 절차(Selection Procedure): 현재 상태에서의 최적의 해답을 선택한다. 적절성 검사(Feasibility Check): 선택된 해가 문제의 조건을 만족하는지 검사한다. 해답 검사(Solution Check): 원..

[1단계] [ 탐욕법 ] 체육복

문제 문제접근 항상 하는 말이지만 for while 정말 중요하고 if에서 조건을 어떻게 달아주느냐가 핵심이다. 탐욕법을 활용한다. 문제해석 def solution(n, lost, reserve): reserve_set = set(reserve)-set(lost) lost_set = set(lost)-set(reserve) for reserve_person in reserve_set: if reserve_person-1 in lost_set: lost_set.remove(reserve_person-1) elif reserve_person+1 in lost_set: lost_set.remove(reserve_person+1) return n-len(lost_set) for 반복문을 통해서 lostlist를..

Programmers/1단계 2022.05.18

[Python] for 한줄로 작성하기

1) for문 한 개 있을 때 list1 = [1,2,3,4,5] list2 = [] for i in list1 : list2.append(i*2) print(list2) # 위 식을 한 줄로 줄이면 다음과 같다 [i*2 for i in list1] # [2,4,6,8,10] 2) 이중 for문 한줄로 작성하기 list1 = [1,2,3] # 1번 for for i in list1 : # 2번 for for j in list1 : print(i*j,end=" ") # 1 2 3 2 4 6 3 6 9 이중 for문을 한 줄로 작성할 때는 바깥쪽의 for 문을 맨 마지막에 작성하고, 내포된 for문을 앞부분에 작성해야 한다. [i*j for j in list1 for i in list1] # 2번 for 문..

if 조건문 [한줄로 쓰기]

if-else 조건식을 한 줄로 간결하게 표현할 수 있다. 코드를 줄이는데 용이하게 사용할 수 있지만 조건식이 복잡한 경우에는 가독성을 떨어뜨릴 수 있니 적절한 경우에 사용하는 것이 좋다. 이번 포스팅에서는 삼항 표현식 문법의 사용 예시와 중첩 삼항 표현식에 대해서 정리해본다. - 순서 - 1. 삼항 표현식 문법 2. 중첩 삼항 표현식 3. 정리 1. 삼항 표현식 문법 true_value if condition else false_value condition의 Boolean 값을 기반으로 반환된다. if조건식의 condition값이 True이면 true_value를 반환하고 False이면 false_value를 반환한다. 위와 같은 식을 삼항표현식과 if - else 조건식으로 작성해보는 예시는 아래와 ..

[python] 파이썬 람다(lambda) 함수 설명 및 예제

1. lambda 함수 설명 2. lambda 함수와 map 3. lambda 함수와 filter 1. 파이썬 람다 함수 설명 원래 함수라는게 복잡한 명령들을 편하게 반복해서 사용할 수 있도록 모아두는 역할을 하는데, def 를 이용해서 다른곳에 함수를 만들고 그걸 또 호출해서 부르기까지의 수고가 필요하지 않은 그런 "가벼운? 함수"들을 위해서 만들어진게 람다 함수 입니다. > 람다함수 선언 방법 lambda 인자: 표현식 lambda 라는 키워드를 입력하고 뒤에는 매개변수(인자)를 입력하고 콜론(:)을 넣은다음에 그 매개변수(인자)를 이용한 동작들을 적으면 됩니다. 예를 들면 인자로 들어온 값에 2를 곱해서 반환한다고 하면 lambda x : x * 2 이런식으로 됩니다. 어떤가요? 간단하죠? > 이해..

Chapter17 클래스와 객체 지향 개념

파이썬은 객체지향 언어이고 객체지향 언어의 핵심은 클래스입니다. 17장에서는 클래스 작성법과 클래스를 이용한 코드를 객체 지향 코드라고 하는 이유를 알게 됩니다. 지금까지 학습한 자료형을 다시 한 번 정리하고, 파이썬이 제공하지 않는 객체를 만들어야 하는 경우에 어떻게 클래스를 작성해야 하는지를 학습합니다. 1. 파이썬의 데이터 객체 모든 데이터를 '객체' 라고 부른다 이 객체는 '클래스' 를 통해서 만들어집니다. type() 함수를 적용해 보면 어느 클래스에서 만들어진 객체인지 알 수 있다. '객체.메소드()'라고 호출하여 어떤 객체에 적용하는 메소드임을 분명히 명시 2. 클래스 - 객체를 만드는 도구 메소드만을 갖는 클래스 객체를 만들려면 '객체명 = 클래스명()' 함수와 다른 점은 메소드 괄호 안에..

Chapter16 에러와 예외처리

파이썬으로 코딩해보면 다양한 에러를 보게 됩니다. 에러는 코드를 완전히 수정해야 하거나 코드에 추가적으로 수정하여 에러를 해결할 수 있습니다. 16장에서는 파이썬 에러 종류를 정리하고, 에러 해결 방법을 학습합니다. 이를 위해 에러 종류를 알아보고, 코드에 에러가 발생하면 스스로 처리할 수 있도록 연습합니다. 1. 에러와 예외 예외 : 파이썬에는 발생하는 모든 에러들을 묶어서 '예외' 라고 부릅니다. SyntaxError, TypeError, NameError, IndexError, ValueError, KeyError SyntaxError는 파이썬 문법을 잘못 사용해서 발생한 에러이고 나머지는 문법을 잘못 사용한 에러가 압니다. SyntaxError 발생 원인 print() 함수의 인수에 따옴표가 빠져..

Chapter15 모듈

모듈은 함수, 클래스, 데이터들을 모아 놓은 묶음입니다. 파이썬이 기본적으로 제공하는 모듈을 어떻게 사용해야 하는지를 공부하고, 코딩에 필요한 모듈을 적절하게 사용할 수 있도록 예제코드를 통해서 연습합니다. 1. 모듈은 무엇일까요 모듈은 서로 관련 있는 프로그램 코드들을 묶어 놓은 파일입니다. 그 속에는 함수, 클래스, 데이터들이 모두 들어갈 수 있습니다. (py 확장자가 붙습니다) 내장 함수들은 그냥 사용할 수 있는데, 모듈 안에 함수들은 사용하기 전에 관련 모듈을 먼저 가져와야합니다. 이것을 '모듈을 import한다' 라고 합니다. 모듈은 다음과 같이 세 종류가 있습니다. 표준 모듈: 파이썬 패키지에 기본적으로 포함된 모듈 사용자 정의 모듈: 사용자가 직접 만들어서 사용하는 모듈 써드파티(Third ..