전체 글 108

[Boj/백준] 1105 Python

문제출처: https://www.acmicpc.net/problem/1105 1105번: 팔 첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 1. 문제 접근 방식 자리수가 다르면 8의 최소개수가 0이고 자리수가 같을때 첫 자리가 다르면 8의 개수가 0이고 그 이후로는 8이 겹칠때마다 count 값을 +1씩 해줬다. 8이 안나오면 break ex) 800 450 => 첫 자리가 다름 => 8의 개수 0. 881 885 => 첫 자리가 같고 8이 같은 자리에서 두번 겹치므로 count+2 => 8의 개수 2개. 2. 내가 푼 코드 import sys n, m..

[Boj문제풀이] 2021.08.27

[Boj/백준] 14241 Python

문제출처: https://www.acmicpc.net/problem/14241 14241번: 슬라임 합치기 영선이와 효빈이는 슬라임을 합치는 게임을 하고 있다. 두 사람은 두 슬라임을 골라서 하나로 합쳐야 한다. 게임은 슬라임이 하나 남았을 때 끝난다. 모든 슬라임은 양수 크기를 가지고 있다. 두 www.acmicpc.net 1. 문제 접근 방식 배열을 큰 순서대로 sorting하고 앞에 원소 두 개끼리 더하고 곱해서 해결하면 될거라고 생각했다. 즉 크기가 가장 큰 두개의 슬라임을 계속해서 합쳐나간다. 2. 내가 푼 코드 import sys case = int(sys.stdin.readline()) arr = list(map(int,sys.stdin.readline().split())) sum = 0 f..

[Boj문제풀이] 2021.08.26

[Boj/백준] 3135 Python

문제출처: https://www.acmicpc.net/problem/3135 3135번: 라디오 첫 줄엔 정수 A와 B가 주어진다 (1 ≤ A, B < 1000, A ≠ B). 다음 줄엔 정수 N이 주어진다 (1 ≤ N ≤ 5). 다음 N개의 줄엔 미리 지정되어 있는 주파수가 주어진다 (주파수는 1000 보다 작다). www.acmicpc.net 1. 문제 접근 방식 sum1라는 변수에 b-a 값을 저장하고 sum2라는 변수에 리스트의 원소중에 b와의 차이가 가장 작은 것+1을 저장하면 될 것 같았다. 그 후에 min값을 출력한다. 2. 내가 푼 코드 import sys a,b = map(int,sys.stdin.readline().split()) case = int(sys.stdin.readline()..

[Boj문제풀이] 2021.08.25

[Boj/백준] 11508 Python

문제 출처: https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 1. 문제 접근 방식 가장 큰 원소 세개씩 묶어서 sum에다가 더해가면 될 것 같았다. 3으로 나누어 떨어지지 않을 경우 0을 추가하는 방향으로 접근했다. 2. 내가 푼 코드 import sys case = int(sys.stdin.readline()) arr=[] for _ in range(case): arr.append(int(sys.stdin.readline())) s..

[Boj문제풀이] 2021.08.24

[Boj/백준] 9935 Python

문제출처: https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 1. 문제 접근 방식 처음엔 쉽게 풀고 싶어서 replace를 이용해 해결하려고 했지만 역시나 시간초과가 발생했다. 따라서 스택을 이용해 푸는 방법으로 선회했다... 스택에 a를 삽입하면서 a와 b의 길이가 같아질 때에 문자열을 비교하는 방법으로 해결했다. 2. 내가 푼 코드 #시간 초과 코드 import sys a = sys.stdin.readline().strip() ..

[Boj문제풀이] 2021.08.24

[Boj/백준] 11501 Python

문제출처: https://www.acmicpc.net/problem/11501 11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net 1. 문제 접근 방식 처음에는 배열을 순환하면서 자기보다 뒤에 있는 최댓값에서 현재 값을 뺀것을 더하면 될 것(오른쪽에 자신보다 가장 큰 값)이라고 생각했다. 하지만 시간초과가 발생했다. 최댓값을 0으로 세팅해두고 리스트를 반대로 순환하면서 최댓값보다 크다면 최댓값을 갱신해주고 작다면 최댓값-현재값을 더해줌으로써 해결했다. 2. 내가 푼 코드 #시간 초과 코드 import ..

[Boj문제풀이] 2021.08.23

[Boj/백준] 1181 Python

문제출처: https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 1. 문제 접근 방식 배열에 입력을 받고 람다 표현식을 사용해서 길이 순서로 정렬을 한 다음에, 알파벳 순서대로 정렬을 하면 될 것이라고 생각했다. 2. 내가 푼 코드 import sys case = int(sys.stdin.readline().strip()) arr=[] for i in range(case): arr.append(sys.stdin.readline().stri..

[Boj문제풀이] 2021.08.23

[Boj/백준] 4889 Python

문제출처: https://www.acmicpc.net/problem/4889 4889번: 안정적인 문자열 입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우 www.acmicpc.net 1. 문제 접근 방식 괄호 문제이므로 스택을 사용하면 되겠다고 생각했다. 하지만 전형적인 문제와는 다르게 삽입할 원소가 }일때 삽입하는 배열의 마지막 원소가 {가 아닐경우 미리 count값을 1 올려주고 } 대신 {을 삽입함으로써 세가지 케이스 ( }{, }} )를 {{의 한가지 케이스로 줄인 것이 적절했다고 생각한다. 2. 내가 푼 코드 import sys num = 1 while..

[Boj문제풀이] 2021.08.21

[Boj/백준] 14425 Python

문제 출처: https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 1. 문제 접근 방식 처음에는 간단하게 in으로 구현하려고 했다. 하지만 시간초과가 발생했다... 리스트 두개를 만들고 각 리스트의 원소를 순서대로 정렬시키고 투 포인터 알고리즘처럼 리스트의 겹치는 값들을 비교해 나갔다. 2. 내가 푼 코드 import sys n, m = map(int,sys.stdin.readline().split()) narr=[]..

[Boj문제풀이] 2021.08.20

[Boj/백준] 1543 Python

문제 출처: https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 1. 문제 접근 방식 주어진 문자열(x)을 순환하면서 (y)를 찾게되면 replace함수를 사용해 공백으로 바꾸는 방법을 사용했다. replace 함수의 세 번째 파라미터를 사용해서 count를 증가시키자. 2. 내가 푼 코드 import sys x = sys.stdin.readline().strip() y = sys.stdin.readline().strip() arr=[] arr.appe..

[Boj문제풀이] 2021.08.19