Yagni 란 뭘까?

파이썬을 이용한 테스트 주도 개발을 읽던 도중 Yagni 라는 단어가 너무 마음에 와닿아서 더 찾아보게 되었습니다.

http://blog.giljae.com/post/107987589458/yagni-you-are-not-gonna-need-it

요즘들어 사람들이 왜 애자일애자일 거리는지 조금씩 알게되는거 같아요 ㅋㅋ..

설정

트랙백

댓글

150421 쿼드 트리 뒤집기

컴퓨터/하루에 한줄씩 2015. 4. 21. 23:07

쿼드트리에 대해서 아시나요?

쿼드트리는 


이렇습니다. 이번문제는 이런 쿼드트리 데이터가 string 으로 들어올 때 이 쿼드트리를 뒤집는 문제입니다. 문제링크는

https://algospot.com/judge/problem/read/QUADTREE

여기입니다.

일단 저는 이렇게 풀었는데요


풀고난 후에 다른사람들의 소스코드를 들여다 보는게 알고스팟의 정말 유용한 기능입니다. 그래서 다른 파이썬으로 푼 사람들의 소스를 봤더니... idx 더하는 부분을 이터레이터를 이용해서 구현했더라고 생소하기만 했던 이터레이터를 이런식으로 사용하다니 존경합니다. 아래는 이터레이터를 사용해서 idx 값을 넘겨주지 않고 구현한 코드입니다.


저는 a, b, c, d 해놓고 지능형 리스트 돌리면 리스트로 나오는게 아니라 a,b,c,d로 각각 들어가는것도 처음알았네요...ㅋ 이래서 남의 코드를 읽어야 하나 봅니다 !


설정

트랙백

댓글

150418 게임판 덮기

컴퓨터/하루에 한줄씩 2015. 4. 19. 00:34

이번문제도 꽤나 재밌는 완전탐색 재귀호출로 풀 수 있는 문제입니다.


왼쪽 그림처럼 비어있는 판에서 오른쪽 그림처럼 덮을 수 있는 경우의 수가 몇개인지 구하는 문제입니다. 모양은 4개가 될 수 있습니다.


      


이렇게 4가지 모양으로 채울 수가 있겠네요


그럼 소스코드를 한번 볼까요?


에디터를 gist로 변경했습니다! 왠지 더 보기 쉬워진거 같아요 ㅋㅋ

설정

트랙백

댓글

150416 짝짓기

컴퓨터/하루에 한줄씩 2015. 4. 17. 01:23

수학문제를 풀다가 이런 문제를 본적이 있을 것이다.

4명을 두명씩 짝지으려고 한다 그런데 서로 친한친구가 아니면 짝지어서 다니지 않기 때문에 친한친구끼리 짝을 지어주려고 한다 이때 짝을 짓는 경우의 수는 ?

이걸 코드로 구현한다면 어떻게 구현해야 할까?

완전탐색을 이용하면 가볍게 풀 수 있다.

일단 학생 수 * 학생 수 만큼 배열을 만들어서 0과 1이 친구라면 [0][1]에 True를 넣는다 물론 [1][0]도 True가 된다.

그리고 짝을 표시하는 배열을 학생수만큼 만들고 짝이 없는 두 친구를 골라 짝이 될 수 있다면 그 자리에 True를 채워넣는다 그리고 모두 짝이 되면 종료하도록 한다. 그 후 돌아와서 다시 False로 넣는다 ( 이미 이 둘이 짝이 되는 모든 경우의 수를 훑어봤기 때문에 )

그렇게 제귀함수를 돌다보면 모든 경우의 수를 셀 수 있다.

코드를 확인해 보자

설정

트랙백

댓글

150415 보글 게임

컴퓨터/하루에 한줄씩 2015. 4. 16. 00:39

보글게임에 대해 아는가?

보글게임은 게임판에서 문자가 랜덤하게 있고 그걸 이어서 문자열을 만드는 게임이다

예를 들어 

a l c d e

e o v e i

z z z z z

이런식으로 게임판이 되어있다면 (0,1), (1,1) (1, 2) (1, 3)을 이어서 love 라는 문자열을 만들 수 있다.

그렇다면 이 게임을 코드로 한번 짜보자

일단 완전탐색으로 구현한 보글게임이다.


일단 완전탐색으로 구현했기 때문에 느리다... 알고리즘 공부를 계속하면서 이 코드는 개선시켜 나가도록 하겠다.

설정

트랙백

댓글

150414 n개의 원소중 i개를 고르는 모든 경우를 출력하는 코드

컴퓨터/하루에 한줄씩 2015. 4. 15. 01:09

0번부터 차례대로 번호가 매겨진 n개의 원소중 3개를 골라 모든 경우를 출력하는 코드이다.


 
이 코드는 문제가 있다. 일단 4개가 되면 4개의 for문을 써야하고 5개가 되면 5개의 for문을 써야한다

그럼 이코드를 재귀함수로 고친 코드를 살펴보자



우리는 일단 앞에서 문제가 몇개씩 고르면 그만큼 for문도 증가하는 문제를 해결했다. 그리고 코드 가독성도 훨씬 좋아졌다.

그럼 오늘의 챌린지
근데 지금까지 코드들은 [1,2,3] [1,2,4] ... [1,2,9] 에서 다시 돌아갈때 [2, 3, 4]가 된다 [2, 1, 2] 로 모든 숫자를 세려면 어떻게 코드를 바꿔야할까? 그냥 smallest 없이 0으로 만들면 되네... 4자리부터는 진짜 오래걸린다 근데...


'컴퓨터 > 하루에 한줄씩' 카테고리의 다른 글

150421 쿼드 트리 뒤집기  (0) 2015.04.21
150418 게임판 덮기  (0) 2015.04.19
150416 짝짓기  (0) 2015.04.17
150415 보글 게임  (0) 2015.04.16

설정

트랙백

댓글

AudioRecord 와 AudioTrack의 채널

컴퓨터/Android 2014. 8. 7. 12:28

이번에 프로젝트를 위해 필요한 음성녹음을 위해 AudioRecord을 통한 녹음과 AudioTrack으로 재생을 시도했습니다.

구글링을 통해 구한 소스를 조금 제것에 맞게 수정해서 테스트용으로 실행하려는데 

Front channels must be present in multichannel configurations 라는 에러를 뱉더군요

구글링을 해도 나오는건 안드로이드 자체 소스밖에 없고... 그냥 안드로이드 소스를 읽다보니 별거 아니였습니다. 

AudioRecord의 Channel은 Front든 Right든 Mono든 IN으로 해주셔야하고

AudioTrack의 Channel은 OUT으로 해주셔아 하는겁니다.

이런 간단한것때문에 한시간 정도 삽질했다는게 안타깝네요. 다른분들은 이러한일로 삽질하지 마시기 바랍니다 ㅠㅠ!

설정

트랙백

댓글

PagerSlidingTabStrip에서 탭안에 Fragment의 생명주기

컴퓨터/Android 2014. 7. 2. 20:04

PageSlidingTabStrip을 사용하여 탭을 구성하던 도중 첫번째 프래그먼트가 두번째 프래그먼트에서 막 생성되고 그렇게 꼬이는 현상이 발생하였습니다.

안드로이드 Fragment 생명주기에 대한 이해가 부족해서 생긴 현상인데요. 기본적으로 Tab은 양옆에 탭만 Fragment를 살려두고 그 나머지 탭의 Fragment는 모두 DestoryView 해버립니다. 예를 들어서 1번탭에서 3번탭으로 가면 1번탭의 Fragment는 Destroy됩니다. 그리고 2번으로 가면 다시 CreateView가 호출됩니다. 

개발할 때 참고하시기 바랍니다. 이것때문이 4시간정도 삽질했네요 ㅠㅠ

설정

트랙백

댓글

플랫플랫한 디자인의 Card UI Library

컴퓨터/Android 2014. 7. 1. 22:08


이런 안드로이드 라이브러리 개발자분이 정말 대단하다고 생각됩니다... ㅜ 요즘 여러가지 Card UI들을 만나보실 수 있습니다.


깃허브 주소 : https://github.com/gabrielemariotti/cardslib

설정

트랙백

댓글

[ MySQL ] 기본 명령어 정리

컴퓨터/서버 셋팅 2014. 7. 1. 10:01

계정 생성

GRANT ALL PRIVILEGES ON [데이터베이스.테이블] TO '[계정]'@[호스트]IDENTIFIED BY '[비밀번호]';


권한 확인

SHOW GRANT FOR '[계정]'@[호스트];


권한 삭제

REVOKE ALL PRIVILEGES ON [데이터베이스.테이블] TO '[계정]'@[호스트] IDENTIFIED BY '[비밀번호]';


계정 삭제

DROP USER '[계정]'@[호스트];


데이터베이스 추가

CREATE DATABASE '[데이터베이스명]';

'컴퓨터 > 서버 셋팅' 카테고리의 다른 글

[Ubuntu] 서버 설치 후 셋팅들  (0) 2014.06.28

설정

트랙백

댓글