Algorithm 17

[Python] K번째 큰 수

문제 개요 문제 💡 현수는 1부터 100사이의 자연수가 적힌 N장의 카드를 가지고 있습니다. 같은 숫자의 카드가 여러장 있을 수 있습니다. 현수는 이 중 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록하려고 합니다. 3장을 뽑을 수 있는 모든 경우를 기록합니다. 기록한 값 중 K번째로 큰 수를 출력하는 프로그램을 작성하세요. 만약 큰 수부터 만들어진 수가 25 25 23 23 22 20 19......이고 K값이 3이라면 K번째 큰 값은 22입니다. 입력 첫 줄에 자연수 N(3

Algorithm 2022.06.05

03. DFS/BFS

그래프 탐색 알고리즘: DFS/BFS 탐색(Search): 많은 양의 데이터 중 필요한 데이터를 찾는 과정 스택 자료구조 먼저 들어온 데이터가 나중에 나가는 형식(후입선출, LIFO)의 자료구조 입구와 출구가 동일한 형태로 스택을 시각화 가능 (ex. 박스 쌓기) 파이썬에서 스택 자료구조를 이용하려면 리스트 자료형을 이용하면 됨 가장 오른쪽에 원소를 삽입하는 append()와 가장 오른쪽에서 원소를 꺼내는 pop()을 지원 append()와 pop()의 시간복잡도: O(1) → 스택 자료구조로 적합 스택 구현 예제 stack = [] stack.append(5) stack.append(2) stack.append(3) stack.append(7) stack.pop() stack.append(1) stac..

[백준(BOJ) / python] 1436 - 영화감독 숌

영화감독 숌 문제 분류 구현 레벨 실버 V 풀이 날짜 2022/05/13 문제 개요 문제 💡 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다. 종말의 숫자란 어떤 수에 6이 적어도 3개이상 연속으로 들어가는..

Algorithm/백준 2022.05.13

02. 구현

문제 1. 상하좌우 N x N 크기의 정사각형 공간이 있다. 가장 왼쪽 위 좌표는 (1, 1)이며 가장 오른쪽 아래 좌표는 (N, N)에 해당한다. 여행가 A는 상, 하, 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1, 1)이다. L: 왼쪽으로 한 칸 이동 R: 오른쪽으로 한 칸 이동 U: 위로 한 칸 이동 D: 아래로 한 칸 이동 입력 조건 첫 번째 줄에 공간의 크기를 나타내는 N이 주어진다. (1

[백준(BOJ) / python] 1546 - 평균

N = int(input()) scores = list(map(int, input().split())) M = scores[0] sum = 0 for i in scores: if i > M: M = i for i in range(N): ns = scores[i]/M*100 sum += ns avg = sum/N print(avg) https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net

Algorithm/백준 2021.08.15

[백준(BOJ) / python] 1157 - 단어 공부

#어렵다 어려워... s = input() s = s.upper() counts = {} maxString = 0 #가장 많이 사용된 알파벳 maxCount = 0 #사용횟수 for i in s: if i in counts: counts[i] += 1 else: counts[i] = 1 for i in counts: if counts[i] > maxCount: maxCount = counts[i] maxString = i elif counts[i] == maxCount: maxString = "?" print(maxString) https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 ..

Algorithm/백준 2021.08.15

[백준(BOJ) / python] 10809 - 알파벳 찾기

S = list(input()) alpahbet = list('abcdefghijklmnopqrstuvwxyz') dic = {} #a-z 딕셔너리에 대한 value값 -1로 초기화 for i in alpahbet: dic[i] = -1 #처음 등장하는 위치를 dic[i]값에 저장 for i in S: if dic[i] == -1: dic[i] = S.index(i) #value값 출력 for i in dic: print(dic[i], end=" ") https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이..

Algorithm/백준 2021.08.15

[백준(BOJ) / python] 8958 - OX퀴즈

n = int(input()) for i in range(n): count = 0 sum = 0 result = list(input()) for j in range(len(result)): if result[j] == "O": count += 1 sum += count elif result[j] == "X": count = 0 print(sum) https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net

Algorithm/백준 2021.08.15