BOJ88

★시간복잡도 기초 - 7문제()★ * 백준 요약 → 백준 24262 - 함수 한 번에 return문 1번 실행, 배열의 indexing은 O(1) → 백준 24263 - for문 input() N번 실행, O(N) → 백준 23235 - 이미 정렬된 array를 sorting하는 데 필요한 time complexity는 O(1) → 백준 24264 - 중첩 for문 $N^2$번 실행, $O(N^2)$ → 백준 24265 - 중첩 for문 $N^2$번 실행, $O(N^2)$ → 백준 24266 - 중첩 for문 $N^3$번 실행, $O(N^3)$ → 백준 24267 - 중첩 for문 $N^3$번 실행, $O(N^3)$ ★ 24262 알고리즘 수업 - 알고리즘의 수행 시간 1 ★ print(1,0,sep='\n') ☀️ 1) 코드1의 수행횟.. BOJ/Multi-Levels 🍭 2022. 10. 23.
★Basics III - 40 Solved★ ★ 24075 計算 (Calculation) ★ A,B=map(int,input().split()) print(max(A+B,A-B),min(A+B,A-B),sep='\n') ★ 17356 욱 제 ★ A,B=map(int,input().split()) M = (B-A)/400 print(1/(1+10**M)) 🍸 ** 거듭제곱으로 ~승 연산자 이용하면 됨 ★ 20232 Archivist ★ winners = {} winners.update(winners.fromkeys([1995,1998,1999,2001,2002,2003,2004,2005,2009,2010,2011,2012,2014,2015,2016,2017,2019],'ITMO')) winners.update(winners.fromkeys([1996.. BOJ/🥉 2022. 10. 21.
★ 정밀도 연산 - 1문제 () ★ 🤾🏻‍♂️ 컴퓨터는 정수는 완벽히 표현하지만, 실수는 완벽히 표현하지 못함을 항상 주의해야 한다 🤾🏻‍♂️ 따라서, 실수 간의 연산에서 오차가 발생할 수 밖에 없고, 특히 type casting할 때 의도와 다르게 다른 수로 변환이 되기 때문에 정말 특히나 주의! 🤾🏻‍♂️ 매우 까다롭고, 복잡한,, ㅠㅠ 정밀도 연산 관련 유형만 모아놓음. ★ 15128 Congruent Numbers ★ 🤾🏻‍♂️ 문제는 매우 간단, 직각삼각형의 빗변이 아닌 두 변(non-hypotenuse legs) 각각이 분모와 분자로 주어지고, 두 변이 이루는 직각삼각형의 넓이가 정수인지, 아닌지의 여부를 따지는 문제 🤾🏻‍♂️ 틀린문제 분석 🤾🏻‍♂️ ※ 아래에서 구한 area와 int(area) 같은 지 비교 ※ ① area.. BOJ/🥉 2022. 10. 20.
★BF Upper-Beginner I - 16 Solved★ ★ 2798 블랙잭 ★ from itertools import combinationsN,M = map(int, input().split())cards = list(map(int,input().split()))groups = list(combinations(cards,3))sum_of_group = []for group in groups: sum_of_group.append(sum(group))sum_of_group.sort(reverse=True)for sum_of_group_each in sum_of_group: if sum_of_group_each  - 풀이 1 - (combinations 조합 함수를 이용한 모든 경우의 수 순회)🗽 combinations(cards,3) 함수를 이용해서.. BOJ/🥉 2022. 10. 19.
★Implementation Beginner II - 50 Solved★ ★ 8958 OX 퀴즈 ★ N = int(input()) for _ in range(N): string = input() score = 0 add = 0 for ch in string: if ch == 'X': add = 0 continue add += 1 score += add print(score) ★ 1259 팰린드롬수 ★ while 1: N = input() if N == '0': break print('yes' if N == N[::-1] else 'no') ★ 1157 단어 공부 ★ word = list(input().lower()) ans = {} for letter in 'abcdefghijklmnopqrstuvwxyz': ans[letter] = word.count(letter) max_.. BOJ/🥉 2022. 10. 10.
★Math & Geometry Upper-Beginner I - 30 Solved★ ★ 1977 완전제곱수 ★ M = int(input()) N = int(input()) ans = [] for i in range(N-M+1): if (M+i)**(1/2) == int((M+i)**(1/2)): ans.append(M+i) if len(ans) > 0: print(sum(ans)) print(min(ans)) else: print(-1) 🤙 1부터 일일이 제곱해서 해당 범위 내에 들어가는 지 아는 방법도 있지만, 《완전제곱수 판별》 🤙 (1) for문 범위 내에서 해당 수가 완전제곱수임을 아는 방법은, 1/2승한 결과와 1/2승한 결과를 int() 취한 것과 같은 지의 여부이다 / (2) 또는 1/2승한 결과를 int() 취한 걸 다시 제곱해서 원래 수와 같은 지의 여부로도 찾을 수 있.. BOJ/🥉 2022. 10. 9.
★정렬 기초1 - 8문제()★ 🤩 정렬 기초 유형은 알려진 여러 정렬 알고리즘을 사용하는 유형이 아닌, 직접 정렬 내장 함수를 사용하거나, 단순히 최대/최소만 물어보는 매우 간단한 유형으로, 가볍게 보고 넘어가면 좋을 듯 하다! ★ 2752 세수정렬 ★ numbers=list(map(int,input().split())) numbers.sort() for number in numbers: print(number,end=' ') #or #print(numbers[0], numbers[1], numbers[2]) 🤩 정렬하면 대표적인 함수 sort()와 sorted() 🤩 또는 map()을 이용해 sorted() 결과를 한번에 string 형태로 바꾼 뒤 join()으로 빈 문자열에 한 번에 붙이는 풀이도 가능! nums = list(m.. BOJ/🥉 2022. 10. 5.
★Recursion Upper-Beginner - 3 Solved★ ★ 10870 피보나치 수 5 ★ def fibo(n): if n in [0,1]: return n else: return fibo(n-1) + fibo(n-2)print(fibo(int(input()))) 🌺 재귀를 이용해서 함수 안에 그 이전 두 동일한 함수를 또 넣어 재귀적으로 계속 함수 결과가 쌓인 최종 합은 곧 피보나치의 수가 됨 ※ 주의! n이 20보다 작거나 같으므로 재귀로 사용 가능하나(재귀의 예시를 보여주기 위해 재귀로 풀었을 뿐), n이 매우 큰 수일경우 recursion 깊이가 너무 깊어 error 발생. 이럴 때는 dp를 해결하거나 추가적인 알고리즘 장치로 해결 해야함. 별도 포스팅 참조 필요 ※★ 5956 Symmetry ★def get_cow.. BOJ/🥉 2022. 9. 27.
★Math Beginner II - 30 Solved★ ★ 2530 인공지능 시계 ★ A,B,C = map(int,input().split()) D = int(input()) cur = 3600*A + 60*B + C after = cur + D after %= 86400 print(after//3600, (after%3600//60), after%60) 👉 시계 관련 문제는 항상 시, 분, 초 관련 숫자 3600과 60을 적절히 조합해야만 풀 수 있는, 꽤 나름 생각해야 하는 문제이다. H는 0부터 23, M과 S는 0부터 59까지의 범위만 허용 가능하므로 이에 맞게 코딩을 해야 할 필요가 있음! / 위 풀이 아이디어) 애초에 초로 바꾼다음, 하루가 넘어갈 경우를 대비해 86400으로 나눈 나머지를 가지고 다시, 시분초에 맞게 정렬 👉 다른 풀이> a, b.. BOJ/🥉 2022. 9. 20.
★Basics II - 50 Solved★ ★ 9654 나부 함대 데이터 ★ print('''SHIP NAME CLASS DEPLOYMENT IN SERVICE N2 Bomber Heavy Fighter Limited 21 J-Type 327 Light Combat Unlimited 1 NX Cruiser Medium Fighter Limited 18 N1 Starfighter Medium Fighter Unlimited 25 Royal Cruiser Light Combat Limited 4 ''') ★ 9653 스타워즈 로고 ★ print(''' 8888888888 888 88888 88 88 88 88 88 88 8888 88 88 88 88888 88 88 888888888 88 88 88888888 88 88 88 88 888888 88 .. BOJ/🥉 2022. 9. 8.
★Implementation Beginner I - 50 Solved★ ★ 2908 상수 ★ lst = list(input().split()) print(max(int(lst[0][::-1]), int(lst[1][::-1]))) ★ 2675 문자열 반복 ★ for _ in range(int(input())): R, S = input().split() R = int(R) for ch in S: print(ch*R,end='') print(' ') 🍃 print()문의 end = ' '를 이용해, print로 원하는 내용을 출력해도, 그 다음 줄이 아닌, 한 칸 띄고 그 이후 결과가 계속 나오게 출력 가능! ① sep → print의 출력물들 사이에 무엇을 넣을 지 내용을 결정할 수 있다. ② end → print의 출력물들을 출력하고 난 마지막에 무엇을 넣을 지 내용 결정 .. BOJ/🥉 2022. 8. 22.
★Number Theory Upper-Beginner I - 15 Solved★ ★ 2609 최대공약수와 최소공배수 ★ A, B = map(int,input().split())a, b = A, BGCD, LCM = 0, 0while True: if A == B: GCD = A print(GCD) break else: if A >= B: A = abs(A-B) else: B = abs(A-B) print(a*b//GCD) 🧚‍♂️ 최대공약수, 최소공배수 전형적인 알고리즘! ① math module - gcd, lcmimport matha, b = map(int, input().split())print(math.gcd(a, b))print(math.lcm(a, b)) .. BOJ/🥉 2022. 8. 21.