일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- programmers
- 데이콘
- Kaggle
- Git
- hackerrank
- gs25
- Docker
- 프로그래머스 파이썬
- 우분투
- Baekjoon
- ubuntu
- 맥북
- PYTHON
- 파이썬
- 더현대서울 맛집
- AI 경진대회
- 편스토랑 우승상품
- Real or Not? NLP with Disaster Tweets
- 자연어처리
- dacon
- leetcode
- 코로나19
- 프로그래머스
- 금융문자분석경진대회
- ChatGPT
- 캐치카페
- github
- SW Expert Academy
- 백준
- 편스토랑
- Today
- Total
목록
반응형
백준 (399)
솜씨좋은장씨
1일 1문제 92일차! 오늘의 문제는 백준의 에디터 입니다. 1406번: 에디터 문제 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 문장의 맨 앞(첫 번째 문자의 왼쪽), 문장의 맨 뒤(마지막 문자의 오른쪽), 또는 문장 중간 임의의 곳(모든 연속된 두 문자 사이)에 위치할 수 있다. 즉 길이가 L인 문자열이 현재 편집기에 입력되어 있으면, 커서가 위치할 수 있는 곳은 L+1가지 경우가 www.acmicpc.net Solution import sys from collections import deque class Editor: def __init__(self..
1일 1문제! 91일차! 91일차의 문제는 백준의 괄호입니다. 9012번: 괄호 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(conc www.acmicpc.net Solution case = int(input()) result = [] for i in range(case): gwalhos = list(in..
1일 1문제 90일차! 오늘의 문제는 GCD 합 입니다. 9613번: GCD 합 문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 0: a = b b = mod mod = a%b return ..
1일 1문제 89일차! 오늘의 문제는 백준의 네 수 입니다. 10824번: 네 수 첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000) www.acmicpc.net Solution A, B, C, D = map(str, input().split()) intAB = int(A+B) intCB = int(C+D) print(intAB + intCB) SOMJANG/CODINGTEST_PRACTICE 1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub. github.com
1일 1문제 88일차! 오늘의 문제는 백준의 곱셈입니다. 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 첫번째 제출 A, B, C = map(int, input().split()) print((A**B) % C) 쉬운문제다! 라고 좋아했는데 엥...? 시간초과 결과를 볼 수 있었습니다. 두번째 제출 A, B, C = map(int, input().split()) print(pow(A, B) % C) 이전에 pow가 ** 보다 빠르다고 했던 것이 기억나서 **를 pow로 바꾸어 도전했지만 여전히 시간초과 결과가 나왔습니다. 세번째 제출 A, B, C = map(int, in..
1일 1문제! 87일차! 오늘의 문제는 백준의 로또 입니다. 6603번: 로또 문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다. 예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2 www.acmicpc.net Solution from itertools import combinations while True: input_command = input() i..
1일 1문제 85일차! 오늘의 문제는 백준의 -2진수 입니다. 2089번: -2진수 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 11011, 11000, 11001 등이다. 10진법의 수를 입력 받아서 -2진수를 출력하는 프로그램을 작성하시오. www.acmicpc.net Solution inputNum = int(input()) base = 1 minusBinary = [] if inputNum == 0: print(0) else: while inputNum: i..
1일 1문제 81일차! 오늘의 문제는 백준의 덱 (Deque) 입니다. 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다. www.acmicpc.net Solution my_dequeue = [] command_list = [] num = input() for i in range(int(num)): command = input() command_list.append(command) for command in command_list: cmd = command.split() if cmd[0] =..
1일 1문제 80일차 오늘의 문제는 백준의 요세푸스 문제입니다. 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net Solution N, K = map(int, input().split()) circular_list = [] answer = [] for i in range(N): circular_list.append(i+1) popNum = 0 while len(circular_list) >0: popNum = (popNum + (K-1)) % len(circular_list) popElemnet = circular_list.pop(popNum) answer.append(str(popElemnet)) p..
1일 1문제 79일차! 오늘의 문제는 백준의 1로 만들기 입니다. 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net Solution inputNum = int(input()) arr = [0] * (inputNum + 1) for i in range(1, inputNum + 1): if i == 1: continue values = [] if i % 3 == 0: values.append(arr[i//3] + 1) if i % 2 == 0: values.append(arr[i//2] + 1) values.append(arr[i-1] + 1) arr[i] = min(values) print(str(arr[inputNum])) ..
1일 1문제 78일차 오늘의 문제는 백준의 가장 긴 감소하는 부분 수열 입니다. 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} 이고, 길이는 3이다. www.acmicpc.net Solution inputNum = int(input()) inputNums = input() inputNums = inputNums.split() inputNums = [int(num) for num in inputNums] nc = [0] * (inputNum) maxNum = 0 f..
1일 1문제 76일차! 오늘의 문제는 백준의 이친수입니다. 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되 www.acmicpc.net Solution n = int(input()) def answer(n): if n == 1: fiboNum = 1 elif n == 2: fibo..
1일 1문제 75일차! 오늘의 문제는 백준의 암호코드 입니다.
1일 1문제 72일차! 오늘의 문제는 백준의 제로입니다. 10773번: 제로 문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ www.acmicpc.net Solution input_N = int(input()) stack = [] for i in range(input_N): input_num = int..
코딩 1일 1문제 68일차! 오늘의 문제는 백준의 JOI와 IOI입니다. 5586번: JOI와 IOI 문제 입력으로 주어지는 문자열에서 연속으로 3개의 문자가 JOI 또는 IOI인 곳이 각각 몇 개 있는지 구하는 프로그램을 작성하시오. 문자열은 알파벳 대문자로만 이루어져 있다. 예를 들어, 아래와 같이 "JOIOIOI"에는 JOI가 1개, IOI가 2개 있다. 입력 첫째 줄에 알파벳 10000자 이내의 문자열이 주어진다. 출력 첫째 줄에 문자열에 포함되어 있는 JOI의 개수, 둘째 줄에 IOI의 개수를 출력한다. 예제 입력 1 복사 JOIOIOIOI 예 www.acmicpc.net Solution input_string = str(input()) JOI = 0 IOI = 0 if len(input_str..
1일 1문제 66일차! 오늘의 문제는 백준에 있는 모음의 개수입니다. 1264번: 모음의 개수 문제 영문 문장을 입력받아 모음의 개수를 세는 프로그램을 작성하시오. 모음은 'a', 'e', 'i', 'o', 'u'이며 대문자 또는 소문자이다. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다. 입력의 끝에는 한 줄에 '#' 한 글자만이 주어진다. 출력 각 줄마다 모음의 개수를 세서 출력한다. 예제 입력 www.acmicpc.net Solution vowel_list = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] ..
1일 1문제! 64일차! 오늘의 문제는 백준의 연속합입니다! 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net Solution inputNum = int(input()) inputNums = input() inputNums = inputNums.split() inputNums = [int(num) for num in inputNums] inputNums.insert(0, 0) maxSum = [] maxSum.append(inputNums[0]) for i in range(1, inputNum+1): maxSum.appe..
1일 1문제 62일차! 오늘의 문제는 백준의 스티커입니다. 9465번: 스티커 문제 상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다. 상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 왼쪽, 오른쪽, 위, 아래에 있는 스티커는 사용할 수 없게 된다. 모든 스티커를 붙일 수 없게된 상냥이는 각 스티커에 점 www.acmicpc.net Solution loopNum = int(input()) for i in range(loopNum): inputNum = int(input()) ..
1일 1문제 54일차! 오늘의 문제는 백준의 30입니다. 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는 www.acmicpc.net Solution 1 N = input() N = list(N) answer = -1 max_num = sorted(N, reverse=True) m..
1일 1문제 53일차! 오늘의 문제는 동전 0 입니다. 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 첫번째 시도 N, K = map(int, input().split()) coins = [] for i in range(N): coin = int(input()) coins.append(coin) index = N - 1 count = 0 while K != 0: if coins[index] K: index = index - 1 print(coun..
1일 1문제 52일차! 오늘의 문제는 서로 다른 부분 문자열의 개수 입니다. 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net Solution 1 string = str(input()) strings = [] for i in range(len(string)): for j in range(len(string) - i): strings.append(string[j:j+i+1]) print(len(set(strings))) SOMJANG/CODINGTEST_PRACTICE 1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTI..
1일 1문제 51일차! 오늘의 문제는 백준의 KMP는 왜 KMP일까? 입니다. 2902번: KMP는 왜 KMP일까? 문제 KMP 알고리즘이 KMP인 이유는 이를 만든 사람의 성이 Knuth, Morris, Prett이기 때문이다. 이렇게 알고리즘에는 발견한 사람의 성을 따서 이름을 붙이는 경우가 많다. 또 다른 예로, 유명한 비대칭 암호화 알고리즘 RSA는 이를 만든 사람의 이름이 Rivest, Shamir, Adleman이다. 사람들은 이렇게 사람 성이 들어간 알고리즘을 두 가지 형태로 부른다. 첫 번째는 성을 모두 쓰고, 이를 하이픈(-)으로 이어 붙인 것이다. 예 www.acmicpc.net Solution input_string = str(input()) split_string = input_st..
1일 1문제 46일차! 오늘의 문제는 쉬운 계단수입니다. 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net Solution inputNum = int(input()) nc = [[0]*10 for _ in range(inputNum+1)] ans, mod = 0, 1000000000 for i in range(1, 10): nc[1][i] = 1 for i in range(2, inputNum+1): for j in range(0, 10): if j > 0: nc[i][j] += nc[i-1][j-1] if j < 9: nc[i][j] += nc[i-1][j+1] nc[i][j] %= mod # print(nc) print(s..
1일 1문제 42일차! 오늘의 문제는 백준의 2xn타일링입니다. 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net Solution n = int(input()) def answer(n): if n == 1: fiboNum = 1 elif n == 2: fiboNum = 2 elif n >= 3: fibo = [0] * (n) fibo[0] = 1 fibo[1] = 2 for i in range(2, n): fibo[i] = fibo[i-1] + fibo[i-2] fiboNum = fibo[n-1] % 10007 return fiboN..
1일 1문제 25일차! 오늘의 문제는 백준의 접미사 배열입니다. 오늘은 이전에 풀었던 문제를 다시 풀어보았습니다. 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 이전 제출 코드 string = input() string = list(string) myStrings = [] while len(string) > 0: myStrings.append(str(string)) string.pop(0) myStrings = set(myStrings) new = [] for word in myStrings: word = word.replace('[', '') word = word.replace(',',..
1일 1문제 10일차! 오늘 문제는 K번째 수 입니다. 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 이 문제는 N개의 숫자를 입력받고 그 N개의 숫자를 정렬한 다음 원하는 K번째 수가 무엇인지 맞추는 문제입니다. 처음 떠오른 아이디어는 입력받은 N개의 숫자를 내림차순으로 정렬한 뒤 뒤에서부터 K번째 수에 index로 접근하는 방법을 떠올려보았습니다. 바로 구현해보았습니다. import sys N, K = map(int, input().split()) nums = [] for i in range(N): num = int(input()) nums.append(nu..
1일 1문제 9일차! 오늘의 문제는 카드입니다. 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다. www.acmicpc.net 이 문제는 -26^2와 26^2 사이의 N개의 카드의 숫자를 입력받으면 그 중 가장 많이 존재하는 카드의 숫자는 무엇인지 찾아내는 문제입니다. 저번 수 정렬하기 3에서 dictionary를 활용하여 풀었던 것을 활용해보려합니다. [BaeKJoon] 10989번: 수정렬하기 3 (Python)..
1일 1문제 8일차! 다행히도 작심 3일에 끝나지 않고 작심 8일까지 왔습니다. 오늘 풀어볼 문제는 수 정렬하기 3 입니다. 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 왜.. 수 정렬하기 2가 있는데 ? 문제가 ...? 또있지...? 라는 생각이 들어 수 정렬하기 2에 제출했던 코드를 제출해보았습니다. [BaeKJoon] 2751번: 수 정렬하기2 (Python) 1일 1문제 5일차! 오늘문제는 수 정렬하기 입니다. 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄..
1일 1문제! 7일차! 오늘의 문제는 백준에있는 국영수 문제입니다. 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 이름은 알파벳 대소문자로 이루어진 문자열이고, 길이는 10자리를 넘지 않는다. www.acmicpc.net 이 문제는 이름과 국어, 영어, 수학 점수를 입력받게 되면 국어 점수가 감소하는 순서로 국어 점수가 같으면 영어 점수가 증가하는 순서로 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 ..
1일 1문제 6일차! 오늘 문제는 나이순 정렬입니다! 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. www.acmicpc.net 이 문제는 나이와 이름을 같이 입력받으면 나이순 > 이름순으로 정렬하여 출력하여 보여주는 문제입니다. 문제를 읽는 순간 Dictionary 를 활용하여 풀어야겠다는 생각이 들었습니다. N = int(input()) data_dict = {} for i in range(N): [a, b] = map(str, input().split()) if int(a) not in data_dict.keys(): dat..