A ship in harbor is safe, but that is not what ships are built for.

백준 11

내일배움캠프 AI, 14일차 TIL - 2022.09.19

스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차 2022.09.19. 14일차 - TIL 1. 알고리즘, 자료구조 강의 Array : 크기가 정해진 연속된 데이터 공간, 데이터 접근이 빠르며(O(1)) 데이터 추가 시 모든 공간이 다 찼다면 새로운 공간을 할당하고, 중간에 요소 삽입/삭제가 어렵다(O(n)) -> 모든 요소를 이동시켜야 한다 Linked List: 크기가 정해지지 않은 데이터 공간, 삽입과 삭제가 빈번한 문제에 사용하기 좋으며 모든 공간이 다 찼어도 맨 뒤의 노드만 동적으로 추가 가능하다. 특정 데이터 조회에 O(n)의 시간이 필요하다. 파이썬의 list는 내부적으로 동적 배열을 사용해 배열, 링크드 리스트 모두로 사용 가능 linked list 구현 # 노드 클래스 정의 cl..

내일배움캠프 AI - 12일차 TIL, 2022.09.15

스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차 2022.09.15. 12일차 - TIL 1. 파이썬 특강 인자에 기본값 지정 # 함수를 선언할 때 인자에 기본값을 지정해줄 수 있습니다. EXPRESSION = { 0: lambda x, y: x + y , 1: lambda x, y: x - y , 2: lambda x, y: x * y , 3: lambda x, y: x / y } def calc(num1, num2, option=None): # 인자로 option이 들어오지 않는 경우 기본값 할당 """ option - 0: 더하기 - 1: 빼기 - 2: 곱하기 - 3: 나누기 """ return EXPRESSION[option](num1, num2) if option in EXPRESSI..

내일배움캠프 AI - 11일차 TIL, 2022.09.14

스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차 2022.09.14. 11일차 - TIL 1. 파이썬 특강 try - exception 을 통한 에러처리 number = "num" try: # try 구문 안에서 에러 발생할 경우 except로 넘어감 number = int(number) # 문자열을 정수형 변환해 에러 발생 except: # 에러가 발생했을 때 처리 print(f"{number}은(는) 숫자가 아닙니다.") ################################################################# number = input() try: int(number) 10 / number except ValueError: # int로 변환하는 과정에서 에러가 ..

내일배움캠프 AI - 10일차 TIL, 2022.09.13

스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차 2022.09.13. 10일차 - TIL 1. Git 특강 vi/vim 편집기 - a와 i를 입력해 INSERT로 내용 삽입 가능 - 입력 종료 후 ESC + :wq로 저장하고, vi/vim 창을 닫음 버전 만들기(☆★별표 다섯개) 로컬 저장소 만들기 $ git init 스테이지에 추가하기 $ git add 현재 작업 디렉터리의 변경 사항을 모두 스테이지에 추가하기 $ git add . 커밋하기(메세지 헤더만 작성) $ git commit -m "커밋 메세지 헤더" 자세한 커밋 메세지로 커밋하기 $ git commit 스테이지에 추가와 커밋 동시에 하기 $ git commit -am "커밋 메세지 헤더" 버전 조회하기 현재 커밋들의 목록 조회하기..

내일배움캠프 AI - 9일차 TIL, 2022.09.08

스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차 2022.09.08. 9일차 - TIL 1. 협업을 위한 Git 활용 기초 필수 프로그램 설치 - Github 가입하기 - Git 설치하기 - Sourcetree 설치하기(preferences에 github username과 github email address 입력) - Sourcetree 설정하기 : Githun에서 받은 token을 sourcetree 인증에서 입력해 Github 계정 연동 Git : 프로젝트의 버전 관리를 위한 도구 - 히스토리를 통한 버전 관리 - 작업 단위 나누기 : 히스토리를 통해 에러 발생 부분 파악 - 협업 용이 : 나누어 작업하고 하나로 합치기 용이 Github : Git 원격 저장소 + Git 으로 가능한 커뮤..

내일배움캠프 AI - 8일차 TIL, 2022.09.07

스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차 2022.09.07. 8일차 - TIL 1. 파이썬 특강 randrange(n, m) : n 이상 m 미만의 난수 생성 randint(n, m) : n 이상 m 이하의 난수 생성 datetime.now() : 현재 날짜 및 시간 출력 from datetime imort datetime, timedelta ''' %y : 두 자리 연도 / 20, 21, 22 %Y : 네 자리 연도 / 2020, 2021, 2022 %m : 두 자리 월 / 01, 02 ... 11 ,12 %d : 두 자리 일 / 01, 02 ... 30, 31 %I : 12시간제 시간 / 01, 02 ... 12 %H : 24시간제의 시간 / 00, 01 ... 23 %M : 두 ..

내일배움캠프 AI - 7일차 TIL, 2022.09.06

스파르타 코딩클럽 내일배움캠프 AI 웹개발자양성과정 3회차 2022.09.06. 7일차 - TIL 1. 파이썬 특강 사칙연산 : 더하기(+), 빼기(-), 곱하기(*), 제곱(**), 나누기(/, 연산결과 항상 float), 몫(//), 나머지(%) 연산축약 num += 3 # num = num + 3 num -= 3 # num = num - 3 num *= 3 # num = num * 3 num **= 3 # num = num ** 3 num /= 3 # num = num / 3 num //= 3 # num = num // 3 num %= 3 # num = num % 3 문자열에서 + 는 문자열 합치기, * 는 문자열 반복 fstring n1 = 5 n2 = 10 # 같은 결과 print("n1 : %..

[백준(BOJ)] 10828번 C++ 풀이

stack을 구현하라는 문제인데 C++은 STL에서 stack이 구현되어있다. 그래서 그냥 구현되어있는 stack을 이용하겠다. 그전에 내용을 간단히 정리하자. 스택(stack)은 LIFO(Last In First Out)의 자료구조이다. 제일 마지막에 넣은 데이터가 처음으로 나오는 알고리즘으로 기본적으로 push와 pop 으로 동작한다. 이때 push는 stack의 최상단에 자료를 넣고, pop은 stack의 최상단 자료를 추출한다. stack STL을 사용하기 위해 #include 헤더파일을 포함해야 한다. 이후 " stack 스택명; " 으로 stack을 선언한다. 1. 데이터 추가 : 스택명.push(넣을 데이터) 형태로 데이터를 추가한다. stack.push(data); 2. 데이터 삭제 : 스..

[백준(BOJ)] 2750번 C++ 풀이

자료구조를 놓은 지 너무 오래되어서 가장 기본인 정렬 문제도 정리할 겸 이 문제를 풀었다. 문제에 대한 설명에서 시간 복잡도가 O(n²)인 정렬 알고리즘으로 풀 수 있고, 그 예로 삽입 정렬, 거품 정렬 등이 있다고 한다. 그래서 그냥 삽입 정렬로 풀어보기로 했다.(거품 정렬은 다음 포스팅에서 해보도록 하겠다) 그럼 우선 삽입 정렬에 대해 정리해보자. 삽입 정렬(insertion sort) 삽입 정렬이란 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입해 정렬을 완성하는 알고리즘이다. 구체적인 과정을 살펴보겠다. 삽입 정렬은 2번째 자료부터 시작하여 그 요소의 앞(왼쪽)의 자료들과 비교하여 삽입할 위치를 지정한 후 자료를 뒤로 옮기고 지정한 자리에 자..

[백준(BOJ)] 2447번 C++ 풀이

오늘도 이어서 간단한 알고리즘 문제를 풀어보려고 한다. 이전 내용과 동일하게 재귀함수 관련 문제이다. [문제 풀이] 일단 규칙성을 확인해봐야 할 것 같다. 가장 작은 도형부터 시작하자. 가운데 부분만 비어있고 나머지는 채워져 있음을 알 수 있다. 이를 한줄로 이어보자. 비어 있는 칸은 차례대로 (1, 1), (1, 4), (1, 7), (1, 10), (1, 13), (1, 16) ... 이다. 이는 j % 3 == 1 일 떄 빈칸이라는 말과 동일하다. 같은 방식이 아래쪽, i에도 적용되므로 i % 3 == 1 && j % 3 == 1 을 만족할 때 좌표는 비어있게 된다. 이제 이를 확장해 n=9일 때를 살펴보자. 비어 있는 공간은 기본 빈 공간에 더해 (3, 3), (3, 4), (3, 5) (3, 3..