본문 바로가기
728x90

Sketch (Programming Language)/Python73

Baekjoon Training #11478 #11478 s=input() cnt=set() for i in range(len(s)): for j in range(i,len(s)): cnt.add(s[i:j+1]) print(len(cnt)) 이중 for문을 이용하여 문자열의 부분들을 지정한다. set에 추가를 해주어 반복되는 부분 문자열은 자연스럽게 제거를 해준다. 그 후에 set의 길이를 len함수로 구해서 출력한다. 2022. 8. 18.
Baekjoon Training #1269 #1269 x,y=map(int,input().split()) a=set(map(int,input().split())) b=set(map(int,input().split())) print(len(a-b)+len(b-a)) 집합 연산을 손쉽게 진행할 수 있는 set를 이용한 문제이다. 숫자들을 map과 set을 이용하여 set의 원소로 받아온다. list의 원소의 수를 구해주는 len() 함수를 set에도 이용할 수 있으므로 차집합의 원소의 수를 구하고 더해줘서 출력하였다. 2022. 8. 10.
Baekjoon Training #1427 #1427 number = int(input()) a = [] for i in str(number): a.append(int(i)) a.sort(reverse=True) for x in a: print(x, end="") 숫자열을 입력을 받고 append함수를 반복문에서 이용하여 숫자열을 숫자 하나 단위로 쪼개서 리스트에 담아둔다. 그 후에 sort()함수를 이용하는데 내림차순의 결과를 원하므로 옵션으로 reverse=True를 이용한다. print(리스트명)을 하면 [4,3,2,1]이런 형태로 출력이되므로 반복문을 이용하여 원소를 하나씩 출력해준다. print(*리스트명)을 하면 대괄호와 콤마는 없어지지만 띄어쓰기가 존재하여 문제에서 원하는 답과 다르므로 반복문을 이용하였다. 2022. 8. 9.
Baekjoon Training #25305 #25305 n,k=map(int,input().split()) num_list=list(map(int,input().split())) num_list.sort(reverse=True) print(num_list[k-1]) n,k값을 입력받고 점수 리스트를 리스트 자료형으로 받는다. 리스트 자료형으로 받은 이유는 sort함수를 쓰기 위해서이다. list.sort()함수는 리스트의 원소들을 오름차순으로 정렬해주는 것이 디폴트 값이다. option을 reverse=True로 설정하여 내림차순으로 바꿔줄 수 있다. reverse=False로 설정하거나 그냥 비워두면 오름차순으로 정렬이된다. 내림차순으로 정렬을 하고 리스트의 인덱스를 지정하여 출력을 한다. 이때 첫번째 인덱스는 0이므로 k-1번째 인덱스를 출력.. 2022. 8. 8.
Baekjoon Training #14425 #14425 import sys N, M = map(int, input().split()) words = dict() cnt = 0 for i in range(N): a = sys.stdin.readline() words[a] = True for j in range(M): b = sys.stdin.readline() if b in words.keys(): cnt+=1 print(cnt) sys.stdin.readline() 함수를 이용하기 위해 sys모듈을 import해왔다. dictionary 자료형을 이용하여 문자열을 비교한다. for문을 이용해 문자를 입력받고 if문에서 dict.keys()를 이용하여 비교를 진행하여 counting을 하였다. 2022. 8. 6.
Baekjoon Training #2798 #2798 n, m = map(int, input().split()) a = list(map(int, input().split())) b = len(a) sum = 0 for i in range(0, b - 2): for j in range(i + 1, b - 1): for k in range(j + 1, b): if a[i] + a[j] + a[k] > m: continue else: sum = max(sum, a[i] + a[j] + a[k]) print(sum) 우선 map을 이용하여 두개의 수와 숫자 리스트를 받는다. list a의 길이를 b에 넣어주고 3중 for문을 이용하여 3개의 숫자 세트를 전수조사한다. 마지막 for문 에서 if else문을 이용하여 지정된 숫자를 넘으면 for문을 이어서.. 2022. 7. 30.
Baekjoon Training #10870 #10870 a = int(input()) num_list = [0,1] for i in range(2, a+1): num = num_list[i-1] + num_list[i-2] num_list.append(num) print(num_list[num]) 우선 친숙한 for문을 이용하여 코드를 작성해 보았다. 0,1이 들어있는 num_list를 만들고 for문을 이용하여 입력한 번호 a에 따라 a-2인덱스의 숫자와 a-1인덱스의 숫자를 더하여 num을 num_list에 append해주어 피보나치 수열을 구현하였다. 하지만 이 문제의 의도는 재귀함수를 이용하는 것이어서 다른 방법을 고안하였다. def fibonacci(a): if a 2022. 7. 29.
Baekjoon Training #1978 #1978 n = int(input()) nums = map(int, input().split()) prime_num = 0 for num in nums: cnt = 0 if num > 1 : for i in range(2, num): if num % i == 0: cnt = 1 if cnt == 0: prime_num += 1 print(prime_num) 첫째줄에서 수들의 개수 n을 입력받았다. 처음에는 이를 이용하여 for문의 반복 횟수를 정하려 했으나 for num in nums 꼴을 이용하여 굳이 n을 이용하지 않고 nums의 숫자들을 순차적으로 이용하여 더 쉽게 풀어냈다. cnt는 for문이 시작할때마다 0으로 초기화를 해주고 nums의 모든 숫자들을 2부터 각 숫자까지 (nums가 4, 7,.. 2022. 7. 24.
Baekjoon Training #1712/#2675 #1712 a,b,c=map(int,input().split()) cnt = 0 while True: cnt += 1 if b>=c: print(-1) break if a+(b*cnt) =c인 경우 비용이 판매가와 같거나 크기 때문에 손익분기점이 존재하지 않는다. while문을 통해 계속 counting을 진행하고 cnt에 따라 손익분기점을 넘는 순간에 cnt값을 출력하고 break문을 통해 while문을 끝냈다. 이는 visual studio에서는 문제없이 실행이 되었으나 백준 제출란에서는 시간초과로 오답철가 되었다. 이는 수학적인 계산을 통해 실행시간을 줄이라는 의미로 받아드렸다. 이를 보완하여 아래와.. 2022. 7. 21.
728x90