⚙️ 알고리즘 59

[백준/파이썬] 2869 - 달팽이는 올라가고싶다

풀이 처음에는 문제 자체를 이해하지못했다.. 예제 입력 1 2 1 5 예제 출력 1 4 예제 입력 2 5 1 6 예제 출력 2 2 예제 1번 같은경우엔 2m 올라가고 1m 내려갔는데 왜 5가 아니고 4인거지? 했는데 다시 생각해보니 3일 뒤에 달팽이는 3m까지 갈거고, 낮에 2m를 가면 바로 정상에 도착하므로 총 4일이 걸리는것이다. 예제 2번은 하루에 4m를 올라가고, 다음에 5m를 올라가는 과정에서 정상에 도착하므로 총 2일이 걸리는 것이다. 따라서 (정상 m-내려가는 m)를 (올라가는 m-내려가는 m)로 나눴을때의 나머지가 0이 아니면(올라가야하는 m가 남았으므로 하루가 더 필요한 것임) 몫+1, 0이 맞으면 정상까지 도달한 것이므로 몫이 정답이 되도록 로직을 짰다. import sys A, B, ..

[백준] 2217 - 로프 (다시풀기)

www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 1차 풀이) 일단 예시답안 자체가 이해가 안됐다.. 그래서 검색해서 찾았을때, suri78.tistory.com/29 이 블로그 글이 가장 이해가 잘되어서 예제를 이해한 뒤 아이디어를 떠올렸다. 위 페이지에서의 로프가 버틸 수 있는 중량이 각각 rope1 : 10, rope2: 15 일때 rope1을 사용한다면 rope2도 버틸 수 있으므로 최대 20을 버틸 수 있음. rope2를 사용한다면 rope1..

[백준] 11399 - ATM

www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 1차 풀이) 오름차순으로 정렬 후에 누적합으로 구하면 될듯..? N = int(input()) times = list(map(int, input().split())) result = 0 sum = 0 times.sort() for i in times: sum+=i result+=sum print(result)

[백준] 11047 - 동전 0

www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 1차 풀이) 직관적으로 생각했을 때 4200을 1000으로 나누고 그다음 100으로 나누게 되면 4+2 = 6번이 된다. 4790은 1000으로 4번 나누고 500으로 1번 100으로 2번 50으로 1번 10으로 4번 총 12번이 된다. 그럼 5000부터는 몫이 0이 되니까 이때 멈추고 그 전까지로 반복문을 돌려서 차례대로 나누어가면서 나누어 떨어..

[Python 문법] 주요 라이브러리 정리

https://doc.python.org/ko/3/library/index.html 파이썬 표준 라이브러리 — Python 3.9.1 문서 파이썬 표준 라이브러리 파이썬 언어 레퍼런스 는 파이썬 언어의 정확한 문법과 의미를 설명하고 있지만, 이 라이브러리 레퍼런스 설명서는 파이썬과 함께 배포되는 표준 라이브러리를 설명합 docs.python.org 여기서 추가적으로 필요한 기능이 있다면 찾는 습관을 기르자! sum() 함수 : iterable 객체(반복 가능한 객체, 즉 리스트, 사전 자료형, 튜플 자료형 등)가 입력되었을때 모든 원소의 합 반환 result = sum([1, 2, 3, 4, 5]) print(result) //15 min() 함수/max() 함수 : 파라미터가 2개이상 들어왔을때 가장 ..

[Python 문법] 함수, 입출력

함수 def 함수명(매개변수): 코드 return 반환할 값 python에서는 매개변수를 직접 지칭하여 넣을 수 있으며, 이 때 순서가 달라도 상관없다는 점이 특징이다. def add(a, b): print("더한 결과", a+b) add(b=7, a=3) //더한 결과 10 변수를 전역변수로 만들고자할 경우 global 을 변수명 앞에 붙인다. 파이썬에서는 람다 표현식을 사용할 수 있다. (lambda 매개변수 : 표현식(매개변수의 값)) 입출력 입력 input() -> 문자열을 입력받으므로 다른 자료형으로 사용하려고 할때, 그 자료형으로 변환해줄 필요가 있음. 문자열을 띄어쓰기로 구분하여 정수 자료형의 데이터로 저장하는 코드 list(map(int, input.split())) ★ ※ map(적용시킬..

[Python 문법] 조건문, 반복문

조건문 python의 조건문은 if ~ elif ~ else pass문 조건문의 값이 참이라고 해도, 아무것도 처리하고싶지 않을때 조건문을 간략하게 표현하는 예시 //들여쓰기 하지않고 한줄로 표현하는 예시 score = 85 if score>=80 : result="Success" else : result="Fail" //조건부 표현식 사용예시 score = 85 result="Success" if score>=80 else "Fail" 반복문 for문에서 수를 사용하여 표현하고자할때 -> range range(처음, 끝값+1) -> 처음~끝값 - ex) range(0, 10) : 0~9 range(수) -> 0~수-1 - ex) range(5) : 0~4 역순으로 처리하고싶을때, range(처음, 끝값..

[Python 문법] 자료형

실수형 //10억 a = 1e9 //752.5 a = 75.25e1 //3.954 a = 3954e-3 파이썬에서는 변수에 소수점을 붙인 수를 대입하면 실수형 변수로 처리한다. 소수부가 0이거나 정수부가 0이면 0을 생략할 수 있다. //a = 5.0 a = 5. //a = -0.5 a = -.5 실수형 데이터는 e나 E를 이용한 지수표현 방식을 이용할 수 있다. 즉, 유효숫자e^지수 = 유효숫자 * 10^지수 특히, 무한(INF) 값을 표현할 때 최대값이 10억일 경우 INF값을 1e9로 표현할 수 있다. (1e9 = 10억) //10억 a = 1e9 //75.25 a = 7.525e1 //3.954 a = 3954e-3 컴퓨터는 실수를 정확히 표현하지 않으므로, 정확한 실수는 round(첫번째 인자,..

[C] 조합, 순열, 중복조합, 중복순열

조합, 순열, 중복조합, 중복순열은 모두 n 개의 item에서 m개를 뽑고자 하는 경우이다. 즉, 4가지 경우 함수의 모양이 조금 다를 뿐 큰 틀은 같다. 조합(combination) : 순서와 상관없다. (0 1 2 와 2 1 0 은 같은 수로 여긴다) 순열(permutation) : 순서에 상관있다. (0 1 2 와 2 1 0 은 다른 수로 여긴다) 중복조합 : 조합이되 중복된 수가 나올 수 있다. 즉, 같은 item을 여러번 뽑을 수 있다. 중복순열: 순열이되 중복된 수가 가능하다. 즉, 같은 item을 여러번 뽑을 수 있다. 문제의 해결 순서 m개를 뽑을 공간을 미리 할당한다. (bucket) m을 뽑을 함수 (pick 함수)의 모양은 ' pick(item 정보, bucket 정보, k(앞으로 뽑..

반응형