[백준] 좋은 암호 - Java(자바)
·
자바/코딩테스트
k 값의 최소 인수분해 값을 구한다. 최소 인수분해보다 l의 값이 크면 나쁜 암호이고 값이 작거나 같으면 좋은 암호로 출력해준다. ​ 이 문제의 경우 알고리즘적으로는 어렵지 않다. ​ 제한부분을 보면 4 ≤ K ≤ 10100 로 단순 int 형의 범위를 벗어나기때문에 BigInteger를 사용하였다. public class Main{ // 좋은 암호 2061 public static void main(String[] args) throws IOException{ // 제한값이 1,000,000 까지라 int로 커버 불가능해 BigInteger 사용 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenize..
[백준] 집 주소 - Java(자바)
·
자바/코딩테스트
간판의 길이를 구하는 알고리즘 문제로 숫자 1은 2cm 0은 4cm 나머지는 3cm 이다. ​ 간판 처음은 1cm를 띄어서 시작하고 숫자 사이는 1cm의 간격이 존재하므로 ​ 숫자를 입력받으면 각자리수를 배열로 만들어 값을 위와 같은 조건에 따라 값을 더해주고 마지막에 +1을 하였다. public class Main { public static void main(String[] args) throws IOException{ // 집 주소 1284 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true) { String n = br.readLine(); int length = 1;// 호수판 길이 // 0입력이..
[백준] 핸드폰 요금 - Java(자바)
·
자바/코딩테스트
n개의 요금을 받아서 영식 요금제와 민식 요금제로 계산했을때 더 적게 나오는 요금제를 출력하는 문제이다.​단 둘의 금액이 같을경우 요금제이름 둘다 출력한다.​문제를 보면 영식요금제는 30초 미만이면 10원의 요금을 민식요금제는 60초 미만이면 15원으로 요금제를 측정한다.​29초이면 10원 30초면 20원 즉 시간/30 + 1 개념이 된다.public class Main{ // 핸드폰 요금 1267 public static void main(String[] args) throws IOException{ int ys = 0; // 영식요금제 int ms = 0; // 민식 요금제 BufferedReader br = new BufferedReader(new InputStreamReader(S..
[백준] 베스트셀러 - Python(파이썬)
·
파이썬/코딩테스트
입력학 n개들의 책중 가장 많이 입력된 책의 이름을 출력해주는 알고리즘이다. ​ 우선 책들의 중복을 제거한 값들과 책들을 비교하면서 책종류마다 카운트를 리스트로 만들었고 ​ 카운트가 담긴 리스트와 카운트 리스트의 MAX 값을 비교해 MAX가 한개 이상일 경우 temp 임시 리스트에 담아 ​ 값을 정렬하여 첫벗째 값으로 프린트해주었다. # 베스트셀러 n = int(input()) book = [] for i in range(n): book.append(input()) # 입력된 책들의 중복을 제거하여 책 종류만 리스트에 담는다. bookList = list(set(book)) result = [] # 책 종류별로 몇권의 책이 있는지 개수를 리스트에 담는다. for i in bookList: cnt = 0 ..
[백준] 통계학 - Python(파이썬)
·
파이썬/코딩테스트
예외조건 n개의 숫자를 입력받아 총 4가지의 결과를 출력하면 되는 문제이다. ​ 첫번째 줄은 산술 평균값을 구하는 문제로 n개의 값의 평균을 구하는데 첫번째 자리는 반올림하여 출력을 하기에 리스트의 총합을 n만큼 나눴다. ​ 예외조건으로 평균값이 -1 에서 0사의의 값이면 반올림하여 -0이 아닌 0으로 만들었다. ​ 두번째 줄은 중앙값 출력으로 이 문제의 경우 전부 홀수로 이루어져있기에 리스트를 정렬하고 리스트 길의의 // 2한값의 리스트 값을 찾아주었다. ​ 세번째 최빈값 출력으로 빈도수가 제일 많이 나온 숫자를 출력한다. (빈도수가 같을경우 두번째로 작은 숫자 출력) ​ 이 같은 경우 파이썬 딕셔러리를 사용하여 리스트에 존재하는 숫자를 키로 사용하여 숫자가 딕셔러리에 미존재하면 추가 존재하면 valu..
[백준] 덩치 - Python(파이썬)
·
파이썬/코딩테스트
n명의 사람들의 덩치 순위를 구하는 문제이다. ​ 키와 몸무게가 다른 사람과 비교하여 둘다 높을경우 등수가 위의 사람이고 ​ 키 몸무게가 다른사람보다 둘다 낮을경우 등수가 아래로 내려가는 문제이다. ​ 키와 몸무게가 하나만 높을경우는 동급의 등수를 측정하기로 했다. ​ 나는 등수를 리스트에 담아 그래도 출력해서 왜 결과가 안나오는지 해매었다. ​ 추후 등수를 하나씩 출력하며 공백을 추가하는 값으로 변경하니 바로 정답 n = int(input()) result = [] for i in range(n): result.append(list(map(int, input().split()))) for i in range(n): k = 1 for j in range(n): if i != j and result[i][..
[백준] 분해합 - Python(파이썬)
·
파이썬/코딩테스트
1부터 입력값 n까지 for문 을 돌면서 출력되는 생성자와 입력된 n 값이 ​ 동일하면 return 하는 파이썬 프로그램을 작성하였다. ​ 생성자의 경우 n + 각자리수 합으로 아래와 같이 구현하였다. # 2231 분해합 import sys n = int(sys.stdin.readline()) num = 1 minResult = 0 for i in range(n): result = num + sum(list(map(int, str(num)))) if result == n: minResult = num break num += 1 sys.stdout.write(str(minResult)+'\n')
[백준] 한수 구하기 - Python(파이썬)
·
파이썬/코딩테스트
브루트포스 알고리즘으로 ​ 전체를 다 탐색하면서 결과를 구하는 알고리즘이다. ​ 이문제의 경우 자리수의 합이 등차수열을 이루고 있으면 한수라고 나타내는데 ​ 1부터 99의 경우의 모든 수는 등차수열을 이루고 있고 100 이상 1000이하의 수는 ​ 각 자리수의 합을 비교함으로 한수의 개수를 구하는 프로그램을 구현하였다. n = int(input()) if n < 100: print(n) else: cnt = 0 for i in range(100, n + 1): result = list(map(int, str(i))) a = result[0] - result[1] b = result[1] - result[2] if a == b: cnt += 1 print(cnt + 99)
[백준] 일곱 난쟁이 - Python(파이썬)
·
파이썬/코딩테스트
9명의 난쟁이중 2명은 백설공주의 난쟁이가 아니라고 가정하였다. ​ 이중 for문으로 처음 서있는 난쟁이와 두번째 서있는 난쟁이의 키를 합산하여 ​ 9명의 난쟁이 - 2명의 난쟁이 == 100 이면 또 그때 존재하는 난쟁이들의 위치를 리스트에 담아 result = [] for i in range(9): result.insert(i,int(input())) sum = sum(result) num = 0 check = False for i in range(9): if check == True: break for j in range(i+1, 9): num = sum - result[i] - result[j] if num == 100: result.remove(result[j]) result.remove(res..
[백준] 거북이 - Python(파이썬)
·
파이썬/코딩테스트
# 2959 백준)파이썬 거북이 x = list(map(int, input().split())) x.sort(reverse=True) print(x[1] * x[3])
[백준] 블랙잭 - Python(파이썬)
·
파이썬/코딩테스트
완전 탐색알고리즘으로 블랙잭을 구하는 문제를 풀어보았다. ​ 카듸의 개수는 100이하로 n개의 숫자에서 3장의 카드를 더해 m의 숫자에 최대한 가까운 값을 출력하는 문제이다. ​ 나의 경우 3중 for문으로 3장을 한장씩 나열하여 index가 1개씩 증가하면서 m과 같은 값이 나오면 break로 같지 않으면 ​ 리스트에 담도록 하였다. import sys n ,m = list(map(int, input().split())) card = list(map(int, input().split())) sum = 0 result = [] chk = True for i in range(n-2): if chk == False: break for j in range(i+1, n-1): if chk == False: br..
[백준] 셀프넘버 구하기 - Python(파이썬)
·
파이썬/코딩테스트
# 백준 4673 셀프넘버 num = 1 # 리스트 10000개로 생성 result = []*10000 # 셀프넘버가 아닌값을 구하여 리스트에 담기 while(True): n_list = list(map(int, str(num))) sum = 0 for i in range(len(n_list)): if i == 0: sum = n_list[i] + num else: sum += n_list[i] num += 1 result.append(sum) if sum >= 10000: break result2 = []*10000 num2 = 1 # 1 - 10000 까지 숫자가 담긴 리스트 생성 for j in range(10000): result2.append(num2) num2 += 1 # 셀프넘버인 값을 구하..
대전집주인
'백준' 태그의 글 목록