분류 전체보기 120

백준 10814 나이순 정렬

출처: https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline()) member = [] for _ in range(n): member.append(list(sys.stdin.readline().split())) member.sort(key = lambda x : int(x[0])) for i in member: print(i[0], i[1]) 입출력은 늘 하던 방식이니 생략한다. 가..

코딩테스트 2022.01.17

백준 2108 통계학

출처 : 출처: https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 : from collections import Counter import sys n = int(sys.stdin.readline()) stat = [] for _ in range(n): stat.append(int(sys.stdin.readline())) a = sum(stat)/len(stat) print(int(round(a,0))) #2 stat.sort() b = len(stat)/..

코딩테스트 2022.01.16

백준 1436 영화감독 슘

출처 : https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 풀이: n = int(input()) series = 666 cnt = 0 while 1: if '666' in str(series): cnt += 1 if cnt == n: print(series) break series += 1 너무 간단한 문제인데 if '666' in str(series)를 몰라서 틀렸다. 문자열 구조에 대해서 조금더 공부가 필요하고 갈 길이 멀다는 것을 느꼈다...

코딩테스트 2022.01.15

백준 1018 체스판 다시 칠하기

출처 : https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 자세한 건 위에 들어가서문제 확인하자. 풀이: n, m = int(input()) board = [] error = [] for _ in range(n): borad.append(input()) for a in range(n-7): for i in range(m-7): idx1 = 0 # 시작이 w idx2 = 0 # 시작이 b for b in range(a,a+7): for j ..

코딩테스트 2022.01.15

백준 7568 덩치 - python

출처 : https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net # 입출력 n = int(input()) group = [] for _ in range(n): x = list(map(int, input().split())) group.append(x) # [[x1,y1],[x2,y2],...] for i in group: rank = 1 for j in group: if i[0] < j[0] and i[1] < j[1]: rank += 1..

코딩테스트 2022.01.15

백준 2231 분해합 - python

출처: https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 풀이 n = int(input()) for i in range(1, n+1): rlt = sum((map(int, str(i)))) tot_rlt = rlt + i if tot_rlt == n : print(i) break if i == n : print(0) 가장 중요한 부분은 rlt = sum((map(int, str(i))) 이 부분이다. str(i)를 i..

백준 2798 블랙잭 - python

출처 : https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 풀이: n,m = map(int,input().split()) card = list(map(int,input().split())) a= [] for i in card: for j in card: for k in card: if i + j+ k

백준 11729 하노이 탑 이동순서 - python

출처 : https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 풀이 def hanoi(n,start,end) : if n == 1 : print(start, end) return hanoi(n-1, start, 6-start-end) print(start, end) hanoi(n-1, 6-start-end, end) n = int(input()) print(2**n - 1) hanoi(n,1,3) 1단계 / 2단계/ 3단계 나눠서 생각을..

코딩테스트 2022.01.15

[프로그래머스] 실패율 - python

출처 : https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 문제가 길어서 간략하게 캡쳐했다. def solution(N, stages): people = len(stages) fail_ratio = {} for i in range(1, N+1): if people != 0 : fail_ratio[i] = stages.count(i) / people people -= stages.count(i) else : fa..

코딩테스트 2022.01.14

[프로그래머스] 같은 숫자는 싫어

출처 : https://programmers.co.kr/learn/courses/30/lessons/12906 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 풀이: def solution(arr): ans = [arr[0]] for i in range(1,len(arr)): if arr[i-1] != arr[i]: pass ans.append(arr[i]) return ans 주어진 리스트에서 중복된 부분은 제거하고 다른 숫자일 경우 출력을 하는 문제다. 간단하게 처음 리스트 값을..

코딩테스트 2022.01.13