본문 바로가기

프로그래밍

(133)
[컴퓨터구조] 인터럽트(Interrupt)란? 인터럽트 개요 2017년 컴퓨터구조 과목을 수강하면서 가장 많이 나온 단어가 인터럽트가 아닐까 싶다. 외부 인터럽트, 내부 인터럽트 인터럽트 서비스, 인터럽트 서비스 루틴, 인터럽트 핸들러, 인터럽트 벡터 등등.. 인터럽트와 관련된 많은 용어들이 나를 괴롭혔다. 이번 포스팅에서는 나를 괴롭혔던 인터럽트에 대해 포스팅하고자 한다. 박찬호 선수를 CPU라고 생각해보자. CPU가 방송 프로그램에 나와 입담을 가동하고 계시다. 한 학생이 용기를 내어서 박찬호 선수의 말을 끊는다. "저 질문이 있습니다!" 바로 이 학생이 한 행동을 인터럽트(interrupt)라고 한다. 즉, CPU의 정상적인 프로그램 실행 을 방해했다는 의미다. 이때 박찬호 선수는 질문을 먼저 처리하고, 다시 원래 했던 얘기로 돌아가 입답을 펼..
단정도(single precision), 배정도(double precision)이란? 부동소수점 개요 처음 C언어를 공부할 때 가장 어리둥절했던 부분이 이 부분인 듯 하다. 처음에는 왜 이걸 배우지? 라는 생각을 했지만 컴퓨터구조론에서 컴퓨터가 실수를 다루는 방식에 대해서 학습하면서 흥미롭게 느꼈다. 다만, 지수와 가수라는 용어가 자꾸 헷갈리기 때문에 영어와 같이 외우는 편이 좋다고 느꼈다. C언어에서 변수의 자료형을 정해줄 때 다음과 같은 자료형을 사용한다. float fnum = 3.141593f; double dnum = 3.141592653589793; float : 단정밀도(single precision) 32비트 double : 배정밀도(double precision) 64비트 좀 더 확장된 long double도 있지만 이는 생략하도록 하겠다. 오늘은 이 배경이 되는 IEEE..
Dropbox에 soft link 걸기 개요 현재 Ubuntu 16.04 LTS 버전을 사용하고 있는데, 개인적으로 운영체제를 밀어야 했던 적이 두 번이나 있다. 처음 운영체제를 밀어야했을 때는 꼼짝없이 파일이 다 날라갔다. 두 번째 운영체제를 날려먹었을 때는 이상한 낌새를 감지하고 백업을 할 기회가 있었다. 이때는 사진을 백업해놓으랴, 블로그에 썼던 글을 백업하랴 여러가지 번거로운 절차들을 거쳐왔다. 이제 더 이상은 안되겠다 싶어서 사전적 예방 조치를 취하기로 했다. 해결책 로컬에서 작업한 결과를 바로바로 클라우드 저장소에 연동하는 방법은 없을까? 해결책은 Dropbox다. 구글 드라이브는 개인적으로 PPT나 보고서 등 공적인 일에 사용하고 있기 때문에, 왠만해서는 잘 사용하지 않는 Dropbox를 이용하기로 했다. 개인적으로 Pycharm..
[파이썬](level4)공항 건설하기 (level4)공항 건설하기 문제 주의점은 음수의 좌표값도 들어간다는 것이다. 나의 풀이 총 세 가지 방법으로 풀어봤습니다. 결론적으로 말하면 아래 두 가지 풀이 모두 시간초과가 발생헀습니다. 그래서 for문을 점점 줄여나가는 방법을 모색했더니 총 3가지의 풀이가 나왔습니다. 저는 아직도 이게 답이라고 믿고 있지만 내장함수를 사용해도 내부에서 반복문이 돌아가기 떄문에 에러가 발생한 듯 합니다. 풀이1 def chooseCity(n,city): dist = [] efficient = [] for i in zip(*city): dist.append(list(i)) for i in range(0, n): new_dist = dist[0][:i] + dist[0][i+1:] new_popu = dist[1][:..
[AWS] AWS StepFunction을 이용한 이미지 처리 개요 2017년 11월 6일(월) 강남 메가존에서 열린 서버리스(serverless) 실습 교육과 아마존 서버리스 4주차 교육을 듣고 다시 복기해보는 포스팅입니다. 실습 코드는 https://github.com/awskrug/aws-serverless-workshops/tree/master/ImageProcessing 을 보고 참고했습니다. 서버리스 2014년도 AWS 람다 서비스가 시작되면서, 서비스 사이의 접착제의 기능을 해왔다. 람다는 람다가 서버 없이 이벤트라고 표현하는 작은 코드들을 올려 중간중간에 데이터를 넘기거나 붙이는 방식으로 활용하고 있다. 개발자들은 서버 없이도 애플리케이션을 만들수 있겠다고 생각했고, API 게이트웨이가 나오면서 더더욱 그런 생각들을 했왔다. 서버리스라는 용어는 아마존..
[파이썬] (level4) 최고의 집합 문제 접근 방법 조건을 만족하지 않는 경우를 먼저 생각했다. Sum // n을 먼저 해야된다고 생각했다. 위 두 생각을 통해 접근하기로 생각했고, 10분 정도가 걸렸다. 나의 풀이 def bestSet(n, s): if n > s: return [-1] else: element = s // n answer = [element] * n if sum(answer) != s: diff = s - sum(answer) for i in range(1, diff+1): answer[-i] += 1 return answer return answer 우선, n이 sum보다 크다면 배열을 만들 수가 없다. 이 경우에는 return [-1]을 한다. element = s // n # 만약 n=8, S=80이면 몫은 9가 ..
[파이썬] (level4) 땅따먹기 게임 자소서 문제 접근 방법 pre_dup : 이전(previous) 라인의 max값 중복 유무 cur_dup : 현재(current) 라인의 max값 중복 유무 pre_max_idx : 이전 라인의 max값 인덱스 cur_max_idx : 현재 라인의 max값 인덱스 경우의 수를 직접 만들어봐야 한다. 인덱스의 겹침 유무는 나중에 판단해도 된다. max값이 리스트 내에 또 있는지가 중요하다. (즉, 중복 유무) 단, for문의 range는 0이 아니라 1 부터 시작한다고 가정한다. (1) pre_dup (O) cur_dup (O) 5 12 12 3
[파이썬] dict타입을 인덱스로 접근하기 dict를 인덱스로 접근하기 문제 items = {'cabbage' : 5000, 'Daikon' : 2000, 'Lettuce' : 3000} 다음과 같은 상품이 있다. 사용자의 입력 을 받아 해당 상품의 가격 을 출력하고자 한다. 해결방법 for index, (key, elem) in enumerate(items.items()): print(index, key, elem) print("Select Item(1-3) = ") goodsIdx = int(input()) print("Total Price : {} ".format(list(item.values())[goodsIdx-1])) enumerate 함수를 사용한다. item.values를 list로 만들어준다. 2번이 핵심이라고 볼 수 있다. it..