전체 글
-
section2.10 점수 계산알고리즘 2022. 10. 25. 18:01
OX 문제는 맞거나 틀린 두 경우의 답을 가지는 문제를 말한다. 여러 개의 OX 문제로 만들어진 시험에서 연속적으로 답을 맞히는 경우에는 가산점을 주기 위해서 다음과 같이 점수 계산을 하기로 하였다. 1번 문제가 맞는 경우에는 1점으로 계산한다. 앞의 문제에 대해서는 답을 틀리다가 답이 맞는 처음 문제는 1점으로 계산한다. 또한, 연속으로 문제의 답이 맞는 경우에서 두 번째 문제는 2점, 세 번째 문제는 3점,..., K번째 문제는 K점으로 계산한다. 틀린 문제는 0점으로 계산한다. 예를 들어, 아래와 같이 10 개의 OX 문제에서 답이 맞은 문제의 경우에는 1로 표시하고, 틀린 경 우에는 0으로 표시하였을 때, 점수 계산은 아래 표와 같이 계산되어, 총점수는 1+1+2+3+1+2=10 점이다. 1 0 ..
-
section2.9 주사위 게임알고리즘 2022. 10. 25. 17:57
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게 임이 있다. 규칙(1) 같은 눈이 3개가 나오면 10,000원+(같은 눈)*1,000원의 상금을 받게 된다. 규칙(2) 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)*100원의 상금을 받게 된다. 규칙(3) 모두 다른 눈이 나오는 경우에는 (그중 가장 큰 눈)*100원의 상금을 받게 된다. 예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3*100으로 계산되어 1,300원을 받게 된 다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2*1,000으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 6이므로 6*100으로 계산되..
-
section2.8 뒤집은 소수알고리즘 2022. 10. 24. 23:39
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910을 뒤집으면 19로 숫자화 해야 한다. 첫자리부터의 연속된 0은 무시한다. 뒤집는 함수인 def reverse(x)와 소수인지를 확인하는 함수 def isPrime(x)를 반드시 작성하 여 프로그래밍한다. import sys sys.stdin = open("input.txt", "rt") n = int(input()) temp = '' nList = list(map(int, input().split())) print(nList) def reverse(x): for i in range(len(str(x))..
-
section2.7 소수(에라토스테네스 체)알고리즘 2022. 10. 24. 23:26
자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력하는 프로그램을 작성하세요. 만약 20이 입력되면 1부터 20까지의 소수는 2, 3, 5, 7, 11, 13, 17, 19로 총 8개입니다. 제한시간은 1초입니다. import sys sys.stdin = open("input.txt", "rt") n = int(input()) for x in range(3, n+1): for y in range(2, x): if x%y == 0: break 소수 > 다른 숫자로 나눴을 때 무조건 나머지가 남음 이 점을 이용해서 for 문에서 나머지가 없으면 그 순간 break이고 break가 한 번도 안 걸린 경우 소수로 생각했다 문제는 9와 같이 2에서는 나머지가 안 남지만 3에서 break가 되는 경우였다 fo..
-
자바 코딩 인터뷰 완벽 가이드 ch8. 재귀 및 동적 프로그래밍자바 2022. 10. 23. 12:26
8.1 재귀의 개요 재귀 메서드 : 직접 또는 간접적으로 스스로를 호출하는 메서드 8.1.1 재귀 문제로 인식하기 재귀 문제는 하위 문제로 구성될 수 있다. > 메서드가 반환한 값을 해당 메서드가 반환한 다른 값으로 표현할 수 있다. > 피보나치 수, 숫자 목록 합계, 최대공약수, 팩토리얼, 재귀이진 검색, 문자열 반전 등 8.2 동적 프로그래밍의 개요 재귀 문제는 평범한 재귀 알고리즘을 사용하거나 프로그래밍을 사용하여 해결할 수 있다. 8.2.1 메모이제이션 메모이제이션(하향식 동적 프로그래밍) : 메서드에서 중복 작업할 때 사용하는 기법. 동일한 입력에 관한 메서드를 한 번만 호출하도록 보장한다. 이미 계산된 입력을 계산하고자 메서드를 호출해야 할 때 메모이제이션이 저장된 결과를 반환하여 메서드 호출..
-
section2.6 자릿수의 합알고리즘 2022. 10. 22. 17:53
N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 def digit_sum(x)를 꼭 작성해서 프로그래밍하세요. import sys sys.stdin = open("input.txt", "rt") n = int(input()) nList = list(map(str, input().split())) cntList = [0]*n max = -247000000 ''' 이중 for문 사용, cnt 리스트 1 for문 > nList 하나씩 접근 > 2 for문 > len으로 자리수 합 구하기, cntList에 넣기 cntList 중 max 구하고 숫자 출력 ''' def digit_sum(x): sum =..
-
section2.5 정다면체알고리즘 2022. 10. 22. 17:52
두 개의 정 N면체와 정 M면체의 두 개의 주사위를 던져서 나올 수 있는 눈의 합 중 가장 확률이 높은 숫자를 출력하는 프로그램을 작성하세요. 정답이 여러 개일 경우 오름차순으로 출력합니다. import sys sys.stdin = open("input.txt", "rt") n, m = map(int, input().split()) ''' 2차원 리스트 만들어서 출력 list = [cnt][sum] ''' sumList = [] cnt = 0 fList = [] for i in range(n): for j in range(m): sumList.append(i+j+2) for x in range(n+m+1): for y in sumList: if x == y: cnt += 1 fList.append([cn..
-
section2.4 대표값알고리즘 2022. 10. 22. 17:51
N명의 학생의 수학 점수가 주어집니다. N명의 학생들의 평균(소수 첫째 자리 반올림)을 구하고, N명의 학생 중 평균에 가장 가까운 학생은 몇 번째 학생인지 출력하는 프로그램을 작성하세요. 평균과 가장 가까운 점수가 여러 개일 경우 먼저 점수가 높은 학생의 번호를 답으로 하고, 높은 점수를 가진 학생이 여러 명일 경우 그중 학생 번호가 빠른 학생의 번호를 답으로 합니다. import sys sys.stdin = open("input.txt", "rt") n = int(input()) scoreList = list(map(int, input().split())) sList = [] avg = 0 min = float('inf') maxIndex = 0 maxScore = -1 ''' 1. 평균 구하기(첫째..