전체 글 562

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 정렬이론

* 정렬 알고리즘 * 1. 선택정렬 2. 삽입정렬 3. 병합정렬 4. 퀵정렬 1. 선택정렬 가장 작은 값을 골라 정렬 앞쪽에 두는 것을 반복하는 정렬이다. 입력값=[5,10,66,77,54,32,11,15] 정렬된리스트=[] while 입력값: 정렬된리스트.append(min(입력값)) 입력값.pop(입력값.index(min(입력값))) print(정렬된리스트) #최솟값 구하는 함수 만들기 def 최솟값(array): 최소=array[0] cnt=0 for i in array: if 최소>i: 최소=i index=cnt cnt+=1 print(최소) print=("최솟값의 idx",index) 2. 삽입정렬 앞에서부터 차례대로 넣는데, 넣을 때 이 값보다 크게 되면 뒤에 놓고 이 값보다 작게 되면 앞에 ..

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 재귀함수_보강예제

# 피보나치 수열 a=0 b=1 def fibo(num): if num==1 or num==0: return 1 else: return fibo(num-1)+fibo(num-2) print(fibo(5)) fibo(5) = fibo(4) = fibo(3) = 5 + 3 = 8 fibo(4) = fibo(3) + fibo(2) = 3 + 2 = 5 fibo(3) = fibo(2) + fibo(1) = 2 + 1 = 3 fibo(2) = fibo(1) + fibo(0) = 2 # 팩토리얼 def factorial(num): if num==1: return 1 else: return num*factorial(num-1) print(factorial(5)) # for문 이용 더하기 -> 재귀함수로 구현 s=0 ..

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 재귀함수3

문제 접근 방법 1. 반복문의 경우 > Bottom - up (작은 문제에서 출발) 2. 재귀함수의 경우 > Top-down (큰 문제에서 출발) recursion = 재귀함수 재귀함수에서는 종료조건이 꼭 있어야한다.! # 2진수 구하기 (방법1 : 내장함수 사용) print(bin(11)[2:]) #2진수, 0b 지우기 print(oct(11)) #8진수 print(hex(11)) #16진수 (방법2 : while문 사용) result='' input_num=10 while True: if input_num%2==0: result+='0' else: result+='1' x=x//2 if x==1 or x==0: print(result[::-1]) break (방법3 : 재귀함수 사용) result =..

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 문제7. Eureka!

1. matrix 형태의 동적 계획법 - Recursion -memorization 이동 방법 1. 맨 왼쪽에서 시작할 경우 이동할 수 있는 방향 : 오른쪽, 아래 3으로 이동하는 최단 거리를 구하는 방식 > min(최소경로(i-1,j), 최소경로(i,j-1)+값(i,j) 일반적으로는 왼쪽에서 출발해서 오른쪽으로 순회를 한다. 하지만 문제에서는 다르다. 오른쪽에서 출발해서 왼쪽으로 순회한다. cross=[ [[3, 0, 1, 1, 8], [5, 0, 4, 5, 4], [1, 5, 0, 5, 1], [1, 2, 1, 0, 1], [0, 2, 5, 1, 1]], [[1, 2, 0, 3, 3], [1, 2, 0, 2, 4], [1, 2, 0, 2, 4], [4, 2, 0, 0, 1], [8, 4, 1, 1, ..

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 문제6. 밭의 비밀

numpy를 이용하면 쉽게 배열 회전이 가능하다. 하지만 인터넷 검색 결과 백준 및 삼성 코테에서는 사용 불가 ㅠㅠ import numpy as np np.rot90(두번째밭,1) + np.array(첫번째밭) # 1회전 반시계방향, 1회전 시계방향은 -1이라고 쓰면 된다. np.rot90(두번째밭,1) - np.array(첫번째밭) np.rot90(두번째밭,1) * np.array(첫번째밭) np.rot90(두번째밭,1) @ np.array(첫번째밭) #행렬의 곱 # 8진법으로 문자열을 바꾸면 정답이다. 정답 = np.rot90(두번째밭,1) + np.array(첫번째밭) chr(int(''.join([str(i) for i in 정답[0]]),8)) #8진법으로 for k in range(5): pr..

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 문제5. 그림자 연결!

def 깊이우선탐색(graph,start): 방문=[] # 너비우선탐색 : 큐 이용 / 깊이우선탐색 : 스택 이용 stack=[start] while stack: n=stack.pop() if n not in 방문: 방문.append(n) 차집합 = graph[n]-set(방문) stack+=차집합 return 방문 깊이우선탐색(graph,100) # 작은값 순회 def 깊이우선탐색(graph,start): 방문=[] # 너비우선탐색 : 큐 이용 / 깊이우선탐색 : 스택 이용 stack=[start] while stack: n=stack.pop() if n not in 방문: 방문.append(n) 차집합 = graph[n]-set(방문) if len(차집합)==0: 방문+=stack break stac..

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 문제4. 자리를 양보해가며!

LRU 알고리즘 (Least Recently Used Algorithm) : 메모리 상에서 가장 최근에 사용한 적이 없는 캐시의 메모리부터 대체하며 새로운 데이터로 갱신시켜준다. 즉, 부재가 발생했을 경우 가장 오랫동안 사용되지 않은 페이지를 제거하는 알고리즘이다. 교체가 자주 일어나는 페이지의 자리를 보존해준다는 의미이다. ※ 페이지부재 : 메모리에 적재된 페이지중에 사용 페이지가 없을 때를 가리키는 말이다. 페이지교체 알고리즘 > 페이지 교체 알고리즘은 메모리를 관리하는 운영체제에서, 페이지 부재가 발생하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것을 교체할지를 결정하는 방법입니다. HIT > 참조하는 값이 이미 페이지에 존재할 경우! 1회 false (척추동물) 2회 false ..

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 문제3. 섬으로 건너가라

오늘도 열심히 강의를 들으며 문제를 풀어나가봅니다..! 이 문제 해설 강의를 보기 전에 혼자서 먼저 풀어봤는데, 백준 사이트에서만 문제를 풀다가 새로운 유형의 문제를 풀으려니까 적응이 잘 안되더라구요 ㅠㅠ 그래도 열심히 해석해보다가 해설 강의 호로록 들어봤어요 :) datetime 모듈 > 날짜와 시간 데이터 처리를 담당한다. import datetiem 오늘시간=datetime.datetime.today() 오늘시간.year 오늘시간.month 오늘시간.day 오늘시간.hour 오늘시간.minute #01:01 시간=1 분=1 f'{시간:0>2}:{분:0>2}' import datetime 오늘시간=datetime.datetime.today() 대기인원=14000605 def solution(대기인원)..

[제주코딩베이스캠프] 눈떠보니 코딩 테스트 전날 | 문제2. JAVA독과 함께

눈떠보니 코딩테스트 전날 강의를 들으면 문제들이 보기 좋게 정리가 되어 있는 노션 링크를 공유해주십니다! 파일을 다운 받지 않아도 되니까 너무 편하고 좋아요 ㅠㅠ 핸드폰으로도 번거롭지 않게 바로 들어갈 수 있어서 더더욱 좋네요 ㅎ..ㅎ del의 시간 복잡도 : O(1) > 인덱스로 삭제한다. > del array[인덱스] 형식 > 인덱스에 범위 연산자 슬라이싱(:)을 사용하면 여러 개의 요소도 삭제 가능하다. remove의 시간 복잡도 : O(N) > 값으로 삭제한다. > array.remove(x) def 징검다리를건너라(돌의내구도,독): answer = [i['이름'] for i in 독] for i in 독: 독의위치=0 while 독의위치 JSON 파일에 저장하기 loads()함수 : JSON 문..

[제주코딩베이스캠프] 눈떠보니 코딩 테스트 전날 | 문제1. 암호해독

** 인코딩 ** : 문자나 기호들의 집합을 컴퓨터에서 표현하는 방법, 문자 코드라고도 한다. 1. 문자열 및 공백제거 함수 : strip(),lstrip(),rstrip() (1) strip('삭제할 문자들') > 문자열 양쪽에 있는 해당 문자 및 공백을 삭제한다. 만약 strip()라면 공백제거 (2) lstrip('삭제할 문자들') > 왼쪽의 특정 문자 삭제하기 (3) rstrip('삭제할 문자들') > 오른쪽의 특정 문자 삭제하기 2. 문자열 나누기 split('기준 문자') : 공백을 기준으로 문자열을 분리하여 리스트로 결과를 반환해준다. split() > 공백을 기준으로 나눈다. 3. 문자열 바꾸기 replace('바꿀문자열','새문자열') 바꿀 문자열 -> 새문자열 replace() 함수는 ..

[제주코딩베이스캠프] 제코베 서포터즈 2기 합격 & 굿즈 후기

안녕하세요 여니입니다 :0 저번주에 정처기 실기 시험을 보고 왔는데.. 공부를 덜 했나봐요 ㅠㅠ 가채점 결과가.. 커트라인에서 2점 정도 부족하더라고요.. 솔직히 다 안다고 생각하고 공부도 설렁설렁 했는데 ㅠㅠ 반성하고 불합격 통지 받으면 그때부터 .. 3회 실기시험 열심히.. 준비해보겠습니다.. 사실 정처기 시험 준비하기 전에! 제주코딩베이스캠프 서포터즈 2기를 뽑는다는 공고글을 보고 고민없이 바로 지원을 했었는데요! 인프런 사이트를 자주 이용하고 있기도 했고 무엇보다도 이번 방학엔 코딩테스트 대비 공부를 꼭 해야해서 강의를 알아보던 도중에 한 줄기의 빛처럼 제게 다가온 제코베..★ 솔직히 대학생한테 단돈 5만원도 큰 돈처럼 느껴지기에 사실 계속 고민을 했었는데,, 감사하게도 이렇게 서포터즈로 뽑아주셔..

영어 독학의 바이블! "헤이민지의 영어 혼공"

1학기가 마무리 되고, 방학이 시작되었고 저는 그렇게 다시 영어 공부에 손을 대기 시작했습니다.. 학기 중에는 인턴 준비와 학업을 병행하다보니 도저히 영어에 신경을 쓸 겨를이 없었습니다 .. 그러다보니 공부했던 내용들도 많이 까먹게 되었고, 전화 영어를 이 상태에서 진행하는 건 무리겠다싶어서 잠시 홀딩해둔상태입니다 :) 약 2달 간, 영어 독학을 통해 실력을 끌어올려보려합니다 !! 영어 공부를 할 때 저는 주로 유튜브를 많이 참고합니다!! 저는 헤이민지님의 채널에서 많은 도움을 받았어요!! 여태까지 무조건 달달 모든 문장을 외우기만 하면 되는 줄 알았는데, 헤이민지님의 영어 독학 꿀팁 영상들을 보며 많이 배웠고 깨달았습니다.. 제가 여태껏 시간과 노력을 투자했음에도 불구하고 실력이 제자리걸음이었던 이유...

[n17276] 배열 돌리기 (in python)

import sys t_num = int(sys.stdin.readline()) # input보다는 sys.stdin.readline.rstrip() rstrip()은 줄바꿈 문자 제외 def plus_turn(array, n): num = n // 2 for i in range(n): array[i][i], array[i][num] = array[i][num], array[i][i] array[i][i], array[i][n - 1 - i] = array[i][n - 1 - i], array[i][i] array[i][i], array[num][i] = array[num][i], array[i][i] for i in range(num): array[num][i], array[num][n - 1 - i]..

[시간 복잡도] 빅오 표기법 (Big-O)

Better Worse O(1) , O(log n), O(n), O(n^2), O(n^3), O(2^n) 상수, 로그, 직선(선형), 선형로그, 제곱, 지수 요새 기술이 발전해서, 공간 복잡도보다는 시간복잡도가 훨 중요하다! 그래서, 시간을 최소화하여 효율적으로 코드를 작성해야 좋은 코드라고 할 수 있다고 한다. (알고리즘은 무엇을 만들기 위한 일련의 과정) 시간 복잡도에서 가장 중요한 것은? 정해진 표현식에 가장 큰 영향을 미치는 n의 단위이다. O(n) 최고차항만 가져오기 O(N+M) ex2) int a = 0; #1 for (i = 0; i i; j--) { # N-i a = a + i + j; } } ''' i=0 , j=N~2 (i+2) ..

[n16926] 배열 돌리기 (python)

풀긴 풀었으나, pypy3으로 돌려야 시간초과 안난다 ㅠㅠ 파이썬으로 돌리면 시간 초과... 좀 더 연구해보자 효과적인 방법을..! n, m, r = map(int, input().split()) array = [list(map(int, input().split())) for _ in range(n)] def rotate(): global array cut_line = min(n, m) // 2 for _ in range(r): fr, br = 0, n - 1 # 기준점 좌표 fc, bc = 0, m - 1 while cut_line and fr < cut_line: key = array[fr][fc] fr_br = br - fr # 행 fc_bc = bc - fc # 열 # 1번, 좌 array[fr]..

[n17413] 단어 뒤집기 2 (in python)

[2022.02.28 다시 품] s=input() button=False answer='' # 최종값 temp='' # 뒤집어야하는 단어 for i in range(len(s)): if s[i]=="": # >를 만나면? button=False # 태그를 나타내는 값을 Off 시켜줌 answer+='>' # > 추가 continue answer+=s[i] # >를 아직 못 만난 경우엔 태그 속 단어이므로 그대로 추가해줌 continue if s[i]!=' ': # 만약 태그에 해당하지 않고 현재 공백이 아닌 경우라면? temp+=s[i] # 뒤집어야할 단어에 속하므로 Temp에 넣는다. else: answer+=temp[::-1] # 공백을 만나기 전 단어를 뒤집어서 넣어줄 차례 answer+=' ' #..

[n20436] ZOAC 3 in python

[2022. 02. 23 다시 품] > 딕셔너리를 이용해서 구할 수 있음! sL, sR = input().split() inp_str = list(input()) left_keybord = {'q': (0, 0), 'w': (0, 1), 'e': (0, 2), 'r': (0, 3), 't': (0, 4), 'a': (1, 0), 's': (1, 1), 'd': (1, 2), 'f': (1, 3), 'g': (1, 4), 'z': (2, 0), 'x': (2, 1), 'c': (2, 2), 'v': (2, 3)} right_keybord = {'y': (0, 5), 'u': (0, 6), 'i': (0, 7), 'o': (0, 8), 'p': (0, 9), 'h': (1, 5), 'j': (1, 6), '..

[n20291] 파일 정리

[2022. 02. 25 다시 품] n=int(input()) dic={} for i in range(n): front,end=input().split('.') if end not in dic: dic[end]=1 continue dic[end]+=1 dic=dict(sorted(dic.items())) for key,value in dic.items(): print(key,value) num = int(input()) array = {} for i in range(num): a, b = input().split('.') if b in array: # 해당 key가 딕셔너리 안에 존재하는 지 (in) array[b] += 1 else: array[b] = 1 array=sorted(array.items(..

[n10994] 별 찍기 - 19

[2022. 02. 23 다시 품] num = int(input()) num -= 1 x, y = (4 * num + 1) // 2, (4 * num + 1) // 2 array = [[' ' for _ in range(4 * num + 1)] for _ in range(4 * num + 1)] array[x][y] = "*" idx = 0 for _ in range((num + 1) * 2 - 1): if idx == 0: idx += 1 continue if idx % 2 == 0: for i in range(2*idx+1): array[x - idx][y - idx + i] = "*" # 윗줄 array[x - idx + i][y - idx] = "*" # 왼쪽 세로줄 array[x - idx + ..

[n1244] 스위치 켜고 끄기

https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net (문제) 스위치들의 마지막 상태를 출력하는 문제. 학생들은 자신의 성별과 받은 수에 따라 스위치를 조작한다. 남학생 스위치 번호가 자기가 받은 수의 배수이면, 그 스위치의 상태를 바꾼다 스위치가 켜져 있으면 끄고, 꺼져 있으면 켠다 여학생 자기가 받은 수와 같은 번호가 붙은 스위치를 중심으로 좌우가 대칭이면서 가장 많은 스위치를 포함하는 구간을 찾아서, 그 구간에 속한 스위치의 상태를 모두 ..

[Python] ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다.

ImportError: DLL load failed: 지정된 모듈을 찾을 수 없습니다. > 터미널에서 python manage.py runserver를 치니까, 서버가 시작되지 않고, 저렇게 에러 메세지가 떠버렸다.. 윈도우키 + R 누르면 아래와 같은 창이 뜨는데, sysdm.cpl을 입력한다! 시스템 속성 -> 고급 -> 환경변수 환경 변수에서 Path 클릭 후 편집버튼 클릭하기 새로 만들기 -> C:\ProgramData\Anaconda3\Library\bin 추가! 그리고 파이참 껐다가 다시 켜서 터미널창에 python manage.py runserver 입력하면, 로컬 서버가 잘 돌아감!

[Django] 프로젝트 생성하기

- 가상환경 만들고, django 패키지 설치 후 진행 - 1. mysite 프로젝트 생성하기 (장고 프로젝트를 담을 디렉터리 생성) 터미널에서 작업 > django-admin startproject mysite 2. pybo 앱 생성하기 > cd mysite (mysite 디렉터리 안에서 생성할 것) > django-admin startapp pybo 3. 서버 구동하기 python manage.py runserver 4. localhost:8000/pybo에 접속하기 404 에러 발생! 파이참 터미널 창에서도 Not Found 에러 발생한 걸 확인할 수 있다. 404 에러가 왜 나는 것일까..? > 내가 요청한 페이지를 찾지 못했기 때문에 오류가 발생하는 것이다. > 서버에서 내가 요청한 페이지를 찾..

"미드나잇 라이브러리", 삶과 죽음 사이

여태까지 소설책보다는 자기계발서를 많이 읽어왔습니다. 자기계발서가 현실적인 조언을 나에게 더 많이 해준다고 생각했기 때문입니다. 따라서, 이번에도 전 자기계발서를 선택할 수 있었습니다. 하지만 그러지 않았습니다. 미드나잇 라이브러리라는 책의 제목을 보니, 내용이 궁금해졌고, 흥미로워보였습니다. 사실, 소설책에 이렇게 관심을 가지게 되는 건 저에게 흔한 일이 아니었습니다. 그래서, 책의 줄거리 내용을 살짝 살펴보았더니, 책 뒷면에 써있는 이 문구가 눈에 띄었습니다. "후회하는 일을 되돌릴 기회가 생긴다면, 다른 선택을 해보겠니? 23분 22분. 죽기에 딱 좋은 시간. 초록의 책들이 가득한 자정의 도서관에서 가장 완벽한 삶을 찾는 여정이 시작된다. > 그리고 이 문구 밑쪽에 여러 작가들이 코멘트한 내용을 읽..