[백준, 2309번] 일곱 난쟁이 # 조합을 사용한 풀이 방법 import sys from itertools import combinations input = sys.stdin.readline li = [int(input()) for _ in range(9)] for i in list(combinations(li, 7)): if sum(i) == 100: for j in sorted(list(i)): print(j) break 알고리즘 2023.07.27
[백준] 셀프 넘버 # 1부터 10000까지 배열을 만들어 두고 # for 문을 이용해 1부터 10000까지 돌면서 # hap이 있으면 result에서 지우는 방식으로 푼 방식 # 여기서 잠시 혼동이 왔던 부분 정리하자면 # del은 인덱스를 지우는 방식 # remove는 값을 지우는 방식 result = [i for i in range(1, 10001)] for i in range(1, 10001): hap = i + sum(list(map(int,str(i)))) if hap in result: result.remove(hap) for i in result: print(i) # 처음 접근한 방식 # 1부터 10000까지 돌면서 1부터 해당 숫자 아래의 모든 값을 조사하며 # 해당 숫자의 값이 되는지 확인 하는 코드 # .. 알고리즘 2023.07.26
[백준, 1182번] 부분수열의 합 # 비트 연산자를 이용해서 내가 푼 방식 # 브루트 포스 문제다 보니 괜찮다고 생각했음 # 다만 단점은 역시 리스트에 하나씩 다 넣고 sum 메서드도 사용하고 초기화 하다보니 # 많은 시간이 소요된다는 단점이 있음 import sys input = sys.stdin.readline n,s = map(int,input().split()) a = list(map(int,input().split())) cnt = 0 for i in range(1 알고리즘 2023.07.26
[백준] 알고리즘 수업 - 점근적 표기 1 # 위의 문제 설명보다 아래의 예제 입력에 있는 해석을 보고 이해를 했음 # 여기서 주의해야할 점은 # 첫째 줄에 함수 f(n)을 나타내는 정수 a1, a0가 주어진다. (0 ≤ |ai| ≤ 100) 으로 # 절댓값이 들어 오는 것이기에 a의 값의 체크를 함께 해줘야 한다는 점 a,b = map(int,input().split()) c = int(input()) d = int(input()) print( 1 if a*d+b 알고리즘 2023.07.25
[백준] 알고리즘 수업 - 알고리즘의 수행 시간 6 # 3개의 반복문이 서로의 값에 대응하며 변하고 있으며 # 예를 들어 n의 값이 7의 경우 # i는 0 ~ 4, j는 1 ~ 5, k = 2 ~ 6까지 실행이 되며 # i가 0, j가 1일때 k는 2,3,4,5,6 로 총 5번 실행이 되는 패턴을 파악하면 # i에 따라 출력되는 횟수는 # 5,4,3,2,1 # 4,3,2,1 # 3,2,1 # 2,1 # 1 # 와 같이 출력을 하기에 아래와 같은 출력 형식을 사용 s = 0 for i in range(1, int(input())-1): s += (i+1)*i//2 print(s, 3) # ===================== # 다만 위의 방식은 효율적이지 못해 다른 사람의 좋은 방식을 찾음 n = int(input()) print(n*(n-1)*(n-2.. 알고리즘 2023.07.25
[백준] 알고리즘 수업 - 알고리즘의 수행 시간 5 # 반복문이 3개라서 세제곱을 해주고, 최고차항의 수는 반복문 수대로 3을 출력 print(int(input())**3, 3) 알고리즘 2023.07.25
[백준] 알고리즘 수업 - 알고리즘의 수행 시간 4 # 알고리즘의 수행 시간 3과 유사하지만 반복문의 실행이 # 첫 번째 for문에서는 1~ n-1, # 두 번째 for문에서는 i+1 ~ n까지이기에 # 예를 들어 n이 7이라고 한다면 # i가 0일 땐 j는 6번, i가 1일 땐 j는 5번, i가 2일 땐 j는 4번으로 # 6, 5, 4, 3, 2, 1 의 식이 나오기에 아래와 같이 출력을 할 수 있다. n = int(input()) print(n*(n-1)//2, 2) 알고리즘 2023.07.25
[백준] 알고리즘 수업 - 알고리즘의 수행 시간 3 # 반복문 2개라 수행 횟수는 n의 제곱으로 출력했고 # 최고차항의 수는 반복문 2개기에 2를 출력 print(int(input())**2, 2) 알고리즘 2023.07.25
[백준] 알고리즘 수업 - 알고리즘의 수행 시간 2 # 반복문이 1개 있기에 수행 횟수는 n만큼 수행하며 # 최고 차항의 차수는 1개의 반복문이기에 1을 출력 print(input(), 1) 알고리즘 2023.07.25
[백준] 알고리즘 수업 - 알고리즘의 수행 시간 1 # 반복문이 없고 입력값에 따른 결과가 바로 도출되기에 아래와 같이 작성해도 결과가 나옴 print(1) print(0) 알고리즘 2023.07.25