전체 글 - Table of Contents332

Implementation 1. intro ★ 코딩의 대부분, 즉 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 ★ 어떤 알고리즘을 사용하더라도, 최종적으로는 구현을 해야 하기 때문에, 사실 모든 문제가 구현 유형이라고 할 수 있다. ★ 흔히 말하는 '구현' 문제는, 풀이를 떠올리는 건 쉽지만 직접 소스 코드로 옮기기 어려운 문제를 지칭 ① 알고리즘은 간단하나, 코드가 지나칠 만큼 길어지는 문제 (프로그래밍 언어 종류에 따라 어려울 수도, 매우 쉬울 수도 있음) ② 실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제 ③ 문자열을 특정 기준에 따라서 끊어 처리해야 하는 문제 (python으로 매우 쉽게 풀 수 있는 경우 많고, 대표적으로 난이도 하의 1-2번 문제 위주) ④ 적절한 라이브러리를 찾아서 사용해야 하는 문제.. Computer Science/Algorithms 2022. 9. 21.
★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.
Greedy * intro "현재 상황에서 지금 당장 좋은 것만 고르는 방법" → 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 적절히 떠오르면 풀리는 경우 많음 → 단순히 가장 좋아보이는 걸 반복적으로 선택해도 최적의 해를 구할 수 있는 지 검토하게 된다. → 일반적인 상황에서 그리디 알고리즘은 최적의 해를 보장할 수 없는 경우가 많음 → 하지만 코딩 테스트에서의 대부분 그리디 문제는 탐욕법으로 얻은 해가 최적의 해가 되는 상황에서, 추론할 수 있어야 풀리게 출제 ★ 주어진 문제를 모든 상황을 다 고려한 채로, 각 상황의 최적의 결과를 상황별로 계속 모으면, 그 결과가 곧 최적의 결과가 되는 유형이 greedy 유형 ☆ 주의점: 문제의 모든 상황을 생각해야 하고 / 각 상황의 greedy한 솔루션.. Computer Science/Algorithms 2022. 9. 12.
★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.
python standard libraries 🍹 python에서 실전으로 유용하게 사용하는 표준 라이브러리들을 이번 포스팅을 기회삼아 정리해보려 한다 Module & Package1. Module [1] 필요성 및 정의 * 코드가 당연히 길어지는 상황에서 모든 함수, 변수를 구현하는 것은 불가능하다. 따라서 누군가 만들어놓은 함수, 변수 등을 활용해야 한다 * 모듈 = 특정 목적을sh-avid-learner.tistory.com 🍹 모듈, 패키지가 무엇인지는 상단 포스팅에서 가볍게 다룬 적이 있다. 🍹 libraries종류설명내장함수기본적인 함수들 제공 (필수적인 기능 포함)(print, input() 등등)itertools반복되는 형태의 데이터 처리 (특히 순열, 조합)heapqheap 자료구조 제공 (주로 우선순위 queue 기능 구현)b.. Python/Fundamentals 2022. 8. 22.
★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.
λ 표현식 🤘🏻 파이썬에서 λ 표현식을 이용하면 함수를 간단하게 작성할 수 있다. 즉, 특정한 기능을 수행하는 함수를 단 한 줄에 작성할 수 있다는 게 큰 특징 #lambda 표현식으로 구현한 더하기 함수 print((lambda a, b: a +b)(3,7)) 🤘🏻 쓰는 방법 ① 특수문자 lambda 키워드 ② 매개변수를 쭉 나열 ③ 이후 콜론(:) 입력 ④ 입력된 매개변수를 더한 결괏값 - 리턴될 출력 결과를 콜론(:) 다음에 입력 - 출력 ※ 변수를 새로 사용해서 return하는 경우 lambda 표현식을 사용할 수 없음 ※ 🤘🏻 함수 자체를 입력으로 받는 함수, 또는 함수 자체가 return문으로 사용되는 함수를 사용할 때, 또는 함수 자체가 매우 간단해 한 번만 사용하고 말 때 주로 lambda 식을 이용.. Python/Fundamentals 2022. 8. 21.
★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.
list, string, tuple, dictionary, set (iterables) ** iterable의 대표 5가지 list, string, tuple, dictionary, set에 대해 깔끔히 정리해보려 한다! ** 파이썬의 대표 자료 저장 방식으로, 반드시 알아야 하는 개념! 꼭 숙지하도록 하자 1. list * intro → 대괄호 []로 묶어서 표시 → list()로 list를 만들 수 있음 print(list(range(1,11))) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(list('hello')) #['h', 'e', 'l', 'l', 'o'] → []안에는 ,로 분리하여 여러 개 요소를 담을 수 있음 → 숫자, 문자열, 그리고 숫자와 문자를 섞은 모든 list 구현 가능(즉, 한 list 내에 다양한 data type이 들어가도 가능) *.. Python/Fundamentals 2022. 8. 19.
★Implementation Basics II - 24 Solved★ ★ 5341 Pyramids ★ while 1: N=int(input()) if N==0:break s=0 for i in range(1,N+1):s+=i print(s) ★ 5300 Fill the Rowboats! ★ N=int(input()) n=0 for i in range(1,N+1): print(i,end=' ') if i%6==0: print('Go!',end=' ') if N%6!=0:print('Go!') ★ 10188 Quadrilateral ★ for _ in range(int(input())): a,b=map(int,input().split()) for _ in range(b): print('X'*a) print() ★ 10179 쿠폰 ★ for _ in range(int(input.. BOJ/🥉 2022. 8. 17.
★Math Beginner I - 30 Solved★ ★ 4153 직각삼각형 ★ #백준 4153 #브론즈 III while True: a,b,c = map(int,input().split()) if (a,b,c) == (0,0,0): break if (int(((max(a,b,c)**2) - (min(a,b,c)**2)) ** (1/2)) in (a,b,c)): print('right') else: print('wrong') 💋 가장 긴 변의 제곱이 나머지 두 변들의 제곱합이 직각삼각형 → 가장 긴 변의 제곱에 가장 작은 변의 제곱을 뺀 결과의 제곱근이 세 변에 있다면(in 연산자), 직각삼각형이라 판단하는 로직으로 코드 설계함 (애초에 sort()를 사용했다면, 세 변이 크기 순서대로 쉽게 나열되어 더 간단히 풀 수 있었을 것!) - 그 외 가능한 로직 .. BOJ/🥉 2022. 8. 16.
★Implementation Basics I - 50 Solved★ ★ 2480 - 주사위 세개 ★ try: a,b,c = map(int, input().split(' ')) if (a6) or (b6) or (c6): raise Exception('1부터 6까지의 자연수만 입력하세요') elif a == b == c: ans = 10000 + a*1000 elif a == b != c or a != b == c: ans = 1000 + 100*b elif a == c!= b: ans = 1000 + 100*a else: ans = 100*max(a,b,c) print(ans) except Exception as e: print(e) ★ 14681 - 사분면 고르기 ★ try: x = int(input()) y = int(input()) if (x == 0 or x < .. BOJ/🥉 2022. 8. 4.