A] [징검다리 0] [징검다리 1] ... [징검다리 N-1] [B철수는 다리가 짧아 징검다리를 한번에 한칸, 혹은 두칸만 건널 수 있다. 징검다리가 N개 있을때의 철수가 A에서 B로 이동할수 있는 경로의 수를 모두 구하라.(아래 추가조건은 풀어도 되고, 안풀어도 되는 문제) 추가 조건1: '징검다리 p'는 너무 미끄러워 밟을 수 없다. 추가 조건2: 영희는 다리가 길어 징검다리를 한번에 한칸, 두칸, 혹은 세칸 건널 수 있다.예(기본 문제 기준):N == 0 A] [B path 1: A -> BN == 1 A] [징검다리 0] [B path 1: A -> 0 -> B path 2: A -> BN == 2 A] [징검다리 0] [징검다리 1] [B path 1: A -> 0 -> 1 -> B path ..
1234567891011121314151617181920212223242526272829303132333435/* 코딩인터뷰 완전분석 - 배열과 문자열 1.1 문자열에 포함된 문자들이 전부 유일한지를 검사하는 알고리즘을 구현하라. 다른 자료구조를 사용할 수 없는 상황이라면 어떻게 하겠는가?*/ // brute force// 빈 배열 arrText를 하나 만들어놓고, 입력된 문자열을 읽어들이면서 배열에 추가한다.// 배열에 추가할때 arrText를 순차검색하며 기존에 있던 문자열인지 아닌지를 검사한다.// arrText에 있던 문자열이면 바로 false를 반환한다. func isUniqueChars(str: String) -> Bool { var arrText:[Character] = [] for ch i..
[Several methods to make a chatting app using Swift.]스위프트를 이용해서 채팅 어플리케이션을 만들려 한다.하지만 서버에 대한 지식이 전혀 없어서 혼자서는 섣불리 엄두도 못 내고 있었는데 간단하게 서버를 구현할 수 있는 방법을 찾았다. 1. 'Socket.io' 이용오늘 시도한 방법이다. localhost만을 이용하긴 했지만 웹과 아이폰 시뮬레이터 상의 채팅기능을 수행해냈다.공통 준비물 : Node.JShtml 언어 이용해서 구현하기 : http://socket.io/get-started/chat/iOS(Swift) 사용해서 구현 : https://www.appcoda.com/socket-io-chat-app/이 두개를 모두 실행해보고, Javascript에 대한 ..
알고리즘 매니아(?) 사이에서는 유명한 문제라고 한다. 물론 나는 스터디에서 처음 봤지만.문제는 간단하다. LIFO의 특성을 갖는 스택 두 개로 FIFO의 특성을 구현하면 된다.푸는데 약 3~5분정도 걸렸던 것 같다. 머릿속에서만 계산하니까 처음에 계속 헷갈리다가 손에 펜과 노트를 쥐는 순간 풀었다.답을 그림으로 나타내면 다음과 같다.각 스택의 명칭을 임의로 Stack for EnQueue, Stack for DeQueue로 지었다. (편하게 인큐스택, 디큐스택으로 부르겠다.) 상황 A. 데이터를 EnQueue 할 때.1. 디큐스택이 비어있는지 확인한다.2. 디큐스택이 비어있지 않다면 디큐스택에 있는 모든 데이터를 pop해서 인큐스택에 push한다.3. EnQueue할 데이터를 인큐스택에 하나씩 push..
평소 독학하던, 하지만 제대로 하고 있는지 방향을 의심하게 만드는 과목 알고리즘..다른 이들과 공유가 필요하다싶어 코딩인터뷰 스터디에 가입했다.랜덤으로 한 사람이 푸는 사람으로 지목이 되면, 다른 사람은 알고리즘 관련 문제를 내고, 푸는 사람은 멋지게 화이트보드를 이용해 풀어내면 된다.내가 아는 문제를 아는 방식으로 풀어낼 경우도 있을 것이고, 모르는 문제를 번뜩이는 아이디어로 풀어낼 경우도 있을 것이다.아는 문제를 생각지도 못하던 방식으로 풀어내는 것을 볼 수도 있겠지.여기는 그러한 문제들을 올려볼까 한다.
생각보다 다른 사람과 코드를 같이 볼 일이 많다.코드 리뷰를 할 때나, 코드를 잘 알지 못하는 사람에게 기본적 원리를 가르쳐준다거나 할 경우에 말이다.그럴 때마다 상대에게 코드를 보낸 후에 전화기를 붙잡고 통화하면서 설명하는 경우가 많았다.하지만 코드를 한두줄 추가해서 보여준다거나, 오타를 고치면 실시간으로 반영이 되지 않으니 다시 코드 파일을 공유해야 하는 불편함이 생긴다.그런 불편함을 해결하기 위한 CodeShare 서비스를 소개한다.https://codeshare.io/ 사이트에 접속하게 되면 아래와 같은 화면이 나온다. 화면 아랫쪽에는 사용예시를 직관적으로 보여준다. 영상채팅을 하며 코드를 설명할 수 있다. 실제 사용 화면이다. 위의 웹사이트 주소를 복사해 상대에게 넘기면, 서로 코드를 공유할 수..
많다고 할 수는 없지만, 여러 개의 프로젝트를 진행하면서 불편함을 느낀 적이 많다.실험적인 기능의 추가를 위해 코드를 수정해야 하는 경우가 많다.버전관리를 알기 전의 나는 지금까지 프로젝트 폴더를 복제한 뒤 복제된 폴더의 코드를 수정하고, 원본에 합치는 방식으로 진행해왔다.Github는 그냥 단순한 소스코드 공유 사이트인줄 알았던 것이다. 비전공자인 내 학과친구들 모두 그러했다. 중요성을 알지 못했던 것이다.하지만 버전관리 시스템을 알게 되고, 나의 생산성은 매우 높아졌다.그래서 나만 알기 아까운 버전관리 시스템의 대략적인 사용방법을 포스팅하고자 한다.로컬 저장소 관리는 SourceTree를, 온라인 저장소는 Github를 이용할 것이다.
코딩실력을 향상시키려고 공부하다보니 '이걸 어디다 써야하나' 막막할 때가 있다. 그동안 프로그래밍 기본서에만 나오는 문제만 풀다가, 우연히 Dovelet(더블릿)이라는 사이트를 알게되어 재밌게 학습중이다. 어찌보면 아무것도 없어보이는 UI같지만, 정말 필요한 기능만 간추려 놓은 모습이다. 2005년부터 운영되어진 것을 알 수 있다. 준회원은 간단하게 무료로 등록할 수 있다. 1~3계단, 옥상을 이용할 수 있는데,여기서 계단이란 코딩의 주제, 난이도별로 묶어놓은 알고리즘 문제 모음이라 할 수 있다.참고로 1계단 : printf & scanf // 2계단 : if // 3계단 : for 등으로 구성되어 초보자들이 이용할 수 있다.옥상은 문제 구분없이 출제권한이 있는 회원이 올려놓은 문제들로, 고수들이 매우 ..