알고리즘 공부/백준 99

(Python)백준 코딩테스트 연습 - 비슷한 단어(1406)

1. 문제 https://www.acmicpc.net/problem/1411 1411번: 비슷한 단어 첫째 줄에 단어의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에 한 줄에 하나씩 단어가 주어진다. 단어의 길이는 최대 50이고, N은 100보다 작거나 같은 자연수이다. 모든 단어의 길이는 같고, 중복 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 주어지는 문자열 개수 n = int(input()) # n_l : 문자열 저장 리스트 n_l = [] for i in range(n): n_l.append(input()) # print(n_l) # simStrCnt : 비슷한 단어 쌍의 수 simStrCnt = 0 for i, v in e..

(Python)백준 코딩테스트 연습 - 에디터(1406)

1. 문제 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline from collections import deque # leftStack, rightStack : 커서 기준 왼쪽 스택과 오른쪽 스택 leftStack = deque(list(input().strip())) rightStack = deque() # print("leftStack :", leftStack) # ..

(Python)백준 코딩테스트 연습 - 폴짝폴짝(1326)

1. 문제 https://www.acmicpc.net/problem/1326 1326번: 폴짝폴짝 첫째 줄에 징검다리의 개수 N(1≤N≤10,000)이 주어지고, 이어서 각 징검다리에 쓰여 있는 N개의 정수가 주어진다. 그 다음 줄에는 N보다 작거나 같은 자연수 a, b가 주어지는 데, 이는 개구리가 a번 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline from collections import deque # n : 징검다리 개수 n = int(input()) # n_l : 징검다리 숫자 리스트 n_l = list(map(int, input().split())) # s_p, e_p : 각각 시작 위치, 도착 위치 s_p, e_p = map(int..

(Python)백준 코딩테스트 연습 - 팰린드롬 만들기(1254)

1. 문제 https://www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # s : 펠린드롬 만들기 전 문자열 s = input().strip() felLen = 0 sLen = len(s) maxLen = sLen * 2 for i in range(sLen, maxLen + 1): if sLen < i: addStr = list(s[0:i-sLen]) addStr.reverse() f..

(Python)백준 코딩테스트 연습 - 사람의 수(1206)

1. 문제 https://www.acmicpc.net/problem/1206 1206번: 사람의 수 첫째 줄에 N이 주어진다. 둘째 줄부터 N개의 줄에 각 문항의 평균 점수가 주어진다. N은 50보다 작거나 같은 자연수이고, 평균 점수는 0보다 크거나 같고, 10보다 작거나 같은 소수이다. 항상 소수 www.acmicpc.net 2. 풀이 import sys import math input = sys.stdin.readline # n : 문항 수 n = int(input()) # n_l : 문항별 평균 리스트 n_l = [] for i in range(n): n_l.append(int(input().split(".")[1])) # print(n_l) sCnt = 1 while True: cntBool =..

(Python)백준 코딩테스트 연습 - 삼각형으로 자르기(1198)

1. 문제 https://www.acmicpc.net/problem/1198 1198번: 삼각형으로 자르기 볼록 다각형이 있고, 여기서 3개의 연속된 점을 선택해서 삼각형을 만든다. 그 다음, 만든 삼각형을 다각형에서 제외한다. 원래 다각형이 N개의 점이 있었다면, 이제 N-1개의 점으로 구성된 볼록 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 다각형 점의 수 n = int(input()) # n_l : 다각형 점 좌표 리스트 n_l = [] for i in range(n): n_l.append(list(map(int, input().split()))) max_area = 0 def area_find(target_list, p_l,..

(Python)백준 코딩테스트 연습 - 부분수열의 합(1182)

1. 문제 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 입력받는 정수 개수, s : 부분 수열의 합이 되야하는 수 n, s = map(int, input().split()) # n_l : 입력받은 정수 리스트 n_l = list(map(int, input().split())) n_l.sort() sequen_cnt =..

(Python)백준 코딩테스트 연습 - 접두사(1141)

1. 문제 https://www.acmicpc.net/problem/1141 1141번: 접두사 접두사X 집합이란 집합의 어떤 한 단어가, 다른 단어의 접두어가 되지 않는 집합이다. 예를 들어, {hello}, {hello, goodbye, giant, hi}, 비어있는 집합은 모두 접두사X 집합이다. 하지만, {hello, hell}, {giant, www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 단어 개수 n = int(input()) # n_l : 단어 리스트 n_l = [] for i in range(n): n_l.append(input().strip()) n_l.sort() i = 0 while i < len(n_l) - 1:..

(Python)백준 코딩테스트 연습 - 한 줄로 서기(1138)

1. 문제 https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 사람 수 n = int(input()) # n_l : 사람 별 본인 기준 왼쪽에 서있는 사람들 중 키가 큰 사람의 수를 기록한 리스트 n_l = list(map(int, input().split())) # line_l : 줄 선 순서 키 리스트 line_l = ["" for i in rang..

(Python)백준 코딩테스트 연습 - 친구(1058)

1. 문제 https://www.acmicpc.net/problem/1058 1058번: 친구 지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또다른 사람 B의 2-친구가 되기 위해선, 두 사람 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 사람 수 n = int(input()) # n_l : 사람 별 친구 리스트 n_l = [] for i in range(n): n_l.append(input()) # f_l : 사람 별 2-친구 수 f_l = [] for i_k, i in enumerate(n_l): # print('i_k :', i_k..