프로그래밍 & 알고리즘 & IT 18

[백준 구현 문제 11866] 요세푸스 문제 0

# 백준 11866번 문제 - 요세푸스 문제 0 # 난이도 : 중 N, K = map(int,input().split()) num_array = [i for i in range(1,N+1,1)] del_idx = 0 #지워야할 array의 index mark_li = [] while len(num_array) > 0 : #array가 모두 지워질때 까지 반복 del_idx = (del_idx + (K-1)) % len(num_array) # 첫번째 지울때는 K번째 숫자 지움. 그 이후부터는 그 index 기준으로 (K-1)씩 shift 하면서 지움. 순환이 있으므로 그 당시의 array의 길이로 나눈 나머지를 이용. mark_li.append(str(num_array[del_idx])) #지우기 전에 숫..

[나동빈 코딩테스트] 구현 문제(게임 개발)

#나동빈 구현 문제 - 게임 개발 #난이도 : 중 N, M = map(int, input().split()) #세로, 가로 A, B, d = map(int,input().split()) #위, 왼쪽으로부터 떨어진 거리 game = [] for k in range(N): game.append(list(map(int,input().split()))) game_mark = [] game_mark.append((B+1,A+1)) #시작점 마킹, x좌표와 y좌표 순. 1부터 시작함. direction_li = [0,1,2,3] #북,동,남,서 순 dx = [0,1,0,-1] dy = [-1,0,1,0] direction = d x = B+1 y = A+1 tol = 0 #방향 바꾸는 한계 while game[y-..

파이썬 mglearn 패키지 import 에러 대처하기.

사이킷런으로 머신러닝을 돌리다보면 종종 튜닝할일이 생긴다. 특히, 그리드서치 시에 mglearn 패키지는 유용한 시각화 툴을 제공해준다. 예를 들면 아래와 같은 각 파리미터 조합 별 cross validation score가 적힌 히트맵을 제공해준다. 그런데 이 유용한 패키지인 mglearn이 얼마전부터 아래와 같은 에러가 발생하면서 import가 안되기 시작했다. __init__() got an unexpected keyword argument 'cachedir' 그리고 구글링을 통해, 좀 오랜 시간 걸려서 이 문제를 해결했다. 혹시나 이런 에러가 발생했을때, 대처 방법이 필요하신 분들을 위해 포스팅하겠다. (필자는 macOS 를 쓰고 있는것을 감안해야겠지만, 그래도 pip 명령어 자체가 달라지진 않을..

[SQL] where절과 having 절의 차이

오늘은 SQL을 사용할 때 혼동하기 쉬운 문법인 where 절과 having 절의 차이에 대해서 포스팅 하겠다. (단, 아래 내용은 postgre sql 기준이다.) ​ 보통 sql 문법은 select from where 로 이루어져 있는데 여기서 where는 기본적으로 from 에 들어있는 relation에 대한 조건으로써 역할을 하게 된다. ​ 그런데 만약 group by 함수를 통해 데이터의 통계량을 그룹별로 구하였을 때, 그 그룹에 대한 조건을 걸기 위해서는 having 절을 사용해야 한다. ​ 그 예로 ​ select age from patients where age>=30; ​ 이라는 구문을 쓰면 30세 이상의 환자들만 뽑히는 쿼리가 될 것이다. ​ 그런데 만약 ​ select disease,..

자료 구조란?

잘은 모르겠지만 컴퓨터공학과에서 제일 처음 배우는 전공 과목이 자료구조 (data structure)가 아닐까 싶다. ​ 그렇다면 자료구조가 뭘까 ? 위키백과의 정의에 따르면 컴퓨터과학에서 효율적인 접근 및 수정을 가능케하는 자료의 조직, 관리, 저장을 의미한다고 한다. 즉, 쉽게 얘기해서 자료, 즉 데이터가 저장된 형태란 거다. 예를 들면 데이터를 array로 저장할지, queue로 저장할지 등을 결정하는게 바로 그 저장되는 형태 또는 구조를 정하는 것과 같다. 참고로 여기서 말하는 데이터란 RAM(Random Access Memory)상에서의 데이터를 말한다. 즉, 단기적으로 사용할 데이터. 쓰고 바로 버릴 데이터를 말한다. ​ 우리는 주로 컴퓨터로 어떤 문제를 해결하려고 할 때, 알고리즘을 이용한다..

[데이터베이스] Key의 종류

(관계형) 데이터베이스 (RDBMS) 의 각 table을 relation이라고 하며 relation은 attribute(column name)와 tuple(rows)들로 이루어져있다. 이때 attribute들의 부분집합으로 super key를 정의할 수 있다. ​ 여기서 key란, 해당 attribute들의 tuple들이 서로 겹치지 않을 때, 그 해당 attribute들은 super key가 될 자격을 가지게 된다. 예를 들어, 아래와 같은 table이 주어졌다고 할 때, {age,sex}, {age,bloodtype} 등은 super key가 될 수 있다. 한편, candidate key란 위의 가능한 super key의 후보들 중 최소한의 개수(cardinality)를 갖는 key이다. 예를 들면,..

jupyter notebook에서 R 사용하는법

데이터 관련 연구를 하다보면 파이썬과 R을 많이 찾게 된다. 필자는 R을 먼저 배우고 파이썬은 거의 학부4학년 때 처음 접했었는데 그래서 그런지 사실 R이 마음의 고향이라면 파이썬은 약간 나에겐 신문물 같은 느낌이 없지 않아 있다. 그리고 파이썬이 확실히 뭔가 더 개발자(?) 스럽다. ​ 뭐 서론은 여기까지하고 가끔 파이썬으로만 코드를 짜다가 고급 통계 관련 패키지나 마이너한 패키지 같은 경우에 파이썬에는 없고 R에만 있는 경우가 있다. (그 반대 케이스도 물론 있을 수 있다.) ​ 이런 경우에는 파이썬 코드를 짜다가 중간에 R 패키지를 불러와야 하는 경우가 생긴다. 이에 대한 해결책으로는 두가지가 있다고 보는데 ​ 첫번째는 jupyter notebook을 사용하고 있다면 jupyter notebook의..