구현 251

[Python] 백준 풀기 1316 - 그룹 단어 체커

파이썬 백준 1316번 실버 5 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 맨 왼쪽 문자를 빼내고 그 다음 문자와 비교한다. 서로 같은 문자이면 일단 조건문을 통과하고, 만약 다른 문자가 나올때 그 남은 문자 묶음에서 빼어낸 문자가 있는지 확인한다. 있다면 return 0 으로 함수를 종료한다. word 의 단어가 1개 남을때까지 조건 (그룹 단어가 안되는 조건) ..

공부하기/백준 2022.12.24

[Python] 백준 풀기 14719 - 빗물

파이썬 백준 14719번 골드 5 https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 문제 보기 분류: 구현, 시뮬레이션 문제 풀기 맨 아래 블록을 한 줄씩 제거해가며 그 라인에 물이 담긴 사각형의 개수를 누적하여 더한다. 블록이 저장된 리스트를 왼쪽에서 오른쪽으로 관찰을 진행하며 블록이 있는 곳에서 없는 곳으로 바뀌는 조건 if block_ls[i] != block_ls[i - 1] and block_ls[i] == 0: 을 찾..

공부하기/백준 2022.12.22

[Python] 백준 풀기 2775 - 부녀회장이 될테야

파이썬 백준 2775번 브론즈 1 https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 문제 보기 분류: 수학, 구현, 다이나믹 프로그램 문제 풀기 1층 1호를 시작으로 해당 위치의 집의 사람 수를 구한다. 해당 위치의 인원을 구하기 위해서는 그 이전 호수의 인원과 그 이전 층의 인원이 먼저 구해져 있어야 한다. 따라서, 1층 1호, 1층 2호, ... , 2층 1호, 2층 2호, ... , ?층 ?호 순서로 찾아 나간다. 작성 코드는 해당 층 호수의 +1 개 만큼 빈 리스트를 생성한다. ..

공부하기/백준 2022.12.17

[Python] 백준 풀기 1259 - 팰린드롬수

파이썬 백준 1259번 브론즈 1 https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 숫자의 각자리를 deque() 를 이용하여 하나하나 입력 저장한다. 입력으로 한자리 수가 들어오면 바로 "yes" 를 출력하여 끝내고, 그렇지 않으면 deque 의 성질을 이용하여 popleft() 와 pop() 으로 리스트 양 끝의 숫자를 하나씩 빼어 같은지를 비교한다. 만약, while loop 을 도는 동안 같지 않으면 "no" 를..

공부하기/백준 2022.12.15

[Python] 백준 풀기 10824 - 네 수

파이썬 백준 10824번 브론즈 3 https://www.acmicpc.net/problem/10824 10824번: 네 수 첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000) www.acmicpc.net 문제 보기 분류: 수학, 구현, 문자열, 사칙연산 문제 풀기 네 개의 수를 각각 입력 받아 함수 str() 을 사용하여 문자형으로 변환을 하여 각각 붙여준 뒤, 함수 int() 를 사용하여 다시 숫자형으로 변환하여 합 계산을 한다. 코드 보기 import sys inputdata = sys.stdin.readline def fnSum(A, B, C, D): AB = str(A) + str(B) CD = str(C) + str(D) # print(AB..

공부하기/백준 2022.12.14

[Python] 백준 풀기 12904 - A와 B

파이썬 백준 12904번 골드 5 https://www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 문제 보기 분류: 구현, 문자열, 그리디 알고리즘 문제 풀기 역으로 T 에서 S 로 변경이 가능한지를 확인한다. 이 문제로 주어진 문자열을 다루는 것에 대해 일부 학습이 되었다. 맨 뒷 문자 확인, 맨 뒷 문자 제거, 문자 전체 뒤집기. while loop 를 실행하면서 같은 T 와 S 가 같아질 때까지 반복을 하여 조건을 만..

공부하기/백준 2022.12.07

[Python] 백준 풀기 2167 - 2차원 배열의 합

파이썬 백준 2167번 실버5 https://www.acmicpc.net/problem/2167 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 문제 보기 분류: 구현, 누적 합 문제 풀기 난이도 실버5 표시되어 있어 생각한 방법으로 제출해도 될 것이라 생각했다. 하지만 시간 초과 결과를 얻었다. 동일한 코드를 PyPy3 로 제출하면 정답처리가 된다. 이 과정에서 다이나믹 프로그래밍으로 풀어야 함을 확인하였고, 다음 문제를 해결하는데 적용할 계획이다. PyPy3 로 제출한 코드는 ..

공부하기/백준 2022.12.04

[Python] 백준 풀기 14935 - FA

파이썬 백준 14935번 브론즈4 https://www.acmicpc.net/problem/14935 14935번: FA 정수 x가 FA수 라면 FA를 출력하고, 아니라면 NFA를 출력한다. www.acmicpc.net 문제 보기 분류: 수학, 구현, 애드 혹 문제 풀기 주어진 F(x) 함수의 규칙에 따라 코드를 작성한다. int 로 입력받은 주어진 숫자는 리스트에 각 자리별로 나누어 저장하고 리스트 첫 번째 숫자 x_ls[0] 와 리스트 길이 (x 의 자릿수) len(x_ls) 를 곱하여 변수 fx 에 저장한다. fx = x_ls[0] * len(x_ls) 주어진 x 와 계산되어 나온 fx 가 다르면 재귀적으로 fnFXFunction(fx) 를 다시 실행하여 x == fx: 가 될 때까지 반복한다. 생..

공부하기/백준 2022.11.26

[Python] 백준 풀기 1152 - 단어의 개수

파이썬 백준 1152번 브론즈2 https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 빈공간으로 분류된 단어들로 이루어진 문장에서 단어의 개수를 찾는다. 전체 문장을 입력 받고 spilt() 을 통해 빈공간으로 각각 나누어 word_ls 에 저장한다. 저장된 리스트의 길이를 구해 단어의 개수를 출력한다. 코드 보기 import sys inputdata = sys.stdin.readline word_ls..

공부하기/백준 2022.11.10

[Python] 백준 풀기 1157 - 단어 공부

파이썬 백준 1157번 브론즈1 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 보기 분류: 구현, 문자열 문제 풀기 주어지는 단어의 길이는 1,000,000 이기 때문에 for loop 을 전체 돌리다가 혹시 시간 초과 걸릴까 싶어 최대한 파이썬 내장 함수를 이용하였다. 주어진 입력 문자를 하나하나 정리해가며 결과 출력을 시행하였다. 그 순서는 > 모두 대문자 변환 > 각각 문자 리스트 변환 저장 > set() 함수를 이용하여 중복 제거 및 존재 알파벳만 저장 > 존재 ..

공부하기/백준 2022.11.09