Python

코딩테스트 공부하는 절차에서 보통 기본적인 구현 문제들을 풀이한 뒤에 그리디 알고리즘 문제부터 풀이해본다고 한다.  그리디 알고리즘이란 뭘까..?  지금부터 그리디 알고리즘에 대해 알아보려고 한다.   👽 그리디 알고리즘 그리디 알고리즘 (탐욕법)은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 그리디 알고리즘을 이용하면 빠르게 최적해로 가는 근사치를 구할 수 있다. 일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없을 때도 많다. 하지만, 코딩테스트에서의 대부분의 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황에서, 이를 추론할 수 있어야 풀리도록 출제 된다.    👽 그리디 알고리즘 문제 #1 거스름 돈 : 문제 설명 당신은 음식점의 계산을 도와주는 점원입니다...
접근 방법 queue FIFO를 활용해 풀면 될 것 같다.  코드 def solution(progresses, speeds): answer = [] days = 0 cnt = 0 while len(progresses) > 0: if (progresses[0] + days*speeds[0]) >= 100: progresses.pop(0) speeds.pop(0) cnt += 1 else : if cnt > 0: answer.append(cnt) cnt = 0 days += 1 answer.ap..
문제  문제 접근 - 1번과 2번 참가자 번호를 /2 하면 몫은 1과 0이다. - 3번과 4번 참가자의 번호는 /2 하면 몫은 1과 0이다.  그렇다면 각 +1 을 하면 어떨까 - 1번과 2번 참가자의 번호에 +1을 해서 /2를 하면 몫은 1, 1이다. - 3번과 4번의 참가자의 번호에 +1 을 해서 /2를 하면 몫은 2, 1이다.  즉, 해당 참가자 번호에서 +1 을 한 후 /2를 하면 다음 라운드에서 얻게 되는 참가자 번호와 같다. 계산을 반복하다 각 참가자들의 번호가 같다면 같은 라운드에서 서로 시합을 진행했다는 말이 되므로 몇번째 라운드에서 시합을 했는지 알 수 있다.    코드 def solution(n,a,b): answer = 0 while a!=b: a = (a+1)..
정수 제곱근 판별  Hint. 더보기- n의 제곱근을 구하기 sqrt = int (n ** (1/2))- 구한 제곱근이 양의 정수이면 제곱근에 1을 더한 값의 제곱을 리턴하기 if sqrt ** 2 == n: return (sqrt+1)**2 - 만약 양의 정수의 제곱이 아니라면 -1을 리턴하기 return -1  코드 def solution(n): sqrt = int(n ** (1/2)) if sqrt**2 == n: return (sqrt+1)**2 else : return -1
문자열 내 p와 y의 개수 문제 설명 문자열s의 'p'와 'y'의 개수를 비교해 개수가 같으면 True 다르면 False를, 'p'와 'y' 둘 다 하나도 없으면 True를 반환하는 문제입니다. ※ 제한사항문자열 s의 길이 : 50 이하의 자연수문자열 s는 알파벳으로만 이루어져 있습니다. Hint . 더보기해야할 것 - 대문자나 소문자로 통일 시키기 - 문자의 개수를 구하기 lower | upper count 코드 def solution(s): answer = s.lower() p = answer.count("p") y = answer.count("y") if p == y : return True elif p == 0 and y == 0 : retu..
큰 수의 법칙 입력 조건 첫째 줄에 N(2 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000)의 자연수가 주어지며, 각 자연수는 공백으로 구분된다. 둘째 줄에 N개의 자연수가 주어진다. 각 자연수는 공백으로 구분된다. 단, 각각의 자연수는 1 이상 10,000 이하의 수로 주어진다. 입력으로 주어지는 K는 항상 M보다 작거나 같다. 출력 조건 첫째 줄에 동빈이의 큰 수의 법칙에 따라 더해진 답을 출력한다. 입력 예시 5 8 3 2 4 5 4 6 출력 예시 46 코드 (단순하게 푸는 답안 예시) n,m,k = map(int,input().split()) data = list(map(int, input().split())) data.sort() first = data[..
문제 2022 연세대학교 미래캠퍼스 슬기로운 코딩생활에 N명의 학생들이 응시했다. 이들 중 점수가 가장 높은 k명은 상을 받을 것이다. 이 때, 상을 받는 커트라인이 몇 점인지 구하라. 커트라인이란 상을 받는 사람들 중 점수가 가장 가장 낮은 사람의 점수를 말한다. 입력 첫째 줄에는 응시자의 수 N과 상을 받는 사람의 수 k가 공백을 사이에 두고 주어진다. 둘째 줄에는 각 학생의 점수 x가 공백을 사이에 두고 주어진다. 출력 상을 받는 커트라인을 출력하라. 제한 1 ≤ N ≤1000 1 ≤ k ≤ N 0 ≤ x ≤ 10000 예제 입력 1 5 2 100 76 85 93 98 예제 출력 1 98 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을..
문제 어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + 30) / 5 = 170 / 5 = 34가 된다. 평균 이외의 또 다른 대표값으로 중앙값이라는 것이 있다. 중앙값은 주어진 수를 크기 순서대로 늘어 놓았을 때 가장 중앙에 놓인 값이다. 예를 들어 10, 40, 30, 60, 30의 경우, 크기 순서대로 늘어 놓으면 10 30 30 40 60 이 되고 따라서 중앙값은 30이 된다. 다섯 개의 자연수가 주어질 때 이들의 평균과 중앙값을 구하는 프로그램을 작성하시오. 입력 첫째 줄부터 다섯 번째 줄까지 한 줄에 하나씩 자연..
문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 각 테스트 케이스에 대해 P를 출력한다. 예제 입력 1 복사 2..
https://jsbin.com/?html,output JS Bin Sample of the bin: jsbin.com https://replit.com/~ Log In Run code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, & interpreter. replit.com https://codepen.io/ CodePen An online code editor, learning environment, and community for front-end web development using HTML, CSS and JavaScript code snippets, p..
silver님
'Python' 태그의 글 목록