목록Computer Science/알고리즘 (11)
가자미의 개발이야기
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12901 코딩테스트 연습 - 2016년 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까 programmers.co.kr 내 풀이 주어진 월을 고려하여 지난 달의 일 수를 switch문으로 일자에 더한다. 더해진 일자를 요일에 따라 7로 나누어 요일을 반환 class Solution { public String solution(int a, int b) { while(a!=1){ switch(a){ case 2: b+=31; brea..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 내 풀이 한 배열 안에서 두 개의 정수의 합을 구하는 과정을 두 반복문으로 구현 결과 값에 중복이 존재할 수 있으므로, contains 메소드로 검사. 결과 배열의 원소 갯수가 가변적이므로 배열 대신 arraylist를 사용 후 배열로 다시 만듬. 정렬은 Collections 클래스의 sort메소드 활용..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 주요 아이디어 반복문 두 개를 사용해 두 배열의 원소를 비교. 모르는 숫자가 다맞은 경우와 다 틀린 경우를 각 변수에 저장 class Solution { public int[] solution(int[] lottos, int[] win_nums) { int bestRate = 7; int worstRate..
#문제: N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력 하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 def digit_sum(x)를 꼭 작성해서 프로그래밍 하세요. ▣ 입력설명 첫 줄에 자연수의 개수 N(3
#문제: 두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확 률이 높은 숫자를 출력하는 프로그램을 작성하세요. 정답이 여러 개일 경우 오름차순으로 출력합니다. ▣ 입력설명 첫 번째 줄에는 자연수 N과 M이 주어집니다. N과 M은 4, 6, 8, 12, 20 중의 하나입니다. ▣ 출력설명 첫 번째 줄에 답을 출력합니다. ▣ 입력예제 1 4 6 ▣ 출력예제 1 5 6 7 import sys #sys.stdin=open("input.txt", "rt") N, M = map(int, input().split()) arr=[] arr2=[] arrDic={} for i in range(1,N+1): for j in range(1, M+1): arr.append(i+j) ..
#문제: ▣ 입력설명 첫줄에 자연수 N(5lst2[i]: min=i elif lst2[min]==lst2[i]: if lst[min]>=lst[i]: min=min elif lst[min]
#문제: 첫 줄에 자연수 N(3
#문제 : N개의 숫자로 이루어진 숫자열이 주어지면 해당 숫자열중에서 s번째부터 e번째 까지의 수를 오름 차순 정렬했을 때 k번째로 나타나는 숫자를 출력하는 프로그램을 작성하세요. ▣ 입력설명 첫 번째 줄에 테스트 케이스 T(1
#문제 : 두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오. ▣ 입력설명 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. ▣ 출력설명 첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 -1을 출력하시오. import sys sys.stdin=open("input.txt", "rt") i=1 count=0 number, inputCount = map(int, input().split( )) while True: if number%i==0: count+=1 if count==inputCount: ..
복잡도 함수 : 입력값의 크기에 따라 시행 횟수를 추측하는 함수. 0보다 큰 정수를 가짐. Linear Time 알고리즘 : n이 인풋일 때 1차식으로 복잡도 함수가 나오는 알고리즘 Quadratic Time 알고리즘 : 2차식으로 복잡도 함수가 나오는 알고리즘 Order(차수) 어떤 알고리즘의 복잡도 함수의 최고차항의 차수 입력값이 커질 수록 차수는 알고리즘의 복잡도에 큰 영향을 미친다. 각 차수 별 입력값 증가에 따른 복잡도 증가 세타(Theta)의 집합은 빅오와 오메가의 교집합이다. 빅오 f(n)이라는 복잡도 함수의 빅오는 f(n)*양의 상수c를 했을 떄 무조건 작거나 같은 g(n) 다시 말해 어떤 N을 기준으로 cf(n)이 g(n)보다 무조건 크거나 같은 경우, g(n)은 f(n)의 빅오에 포함된..