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..
알고리즘 매니아(?) 사이에서는 유명한 문제라고 한다. 물론 나는 스터디에서 처음 봤지만.문제는 간단하다. LIFO의 특성을 갖는 스택 두 개로 FIFO의 특성을 구현하면 된다.푸는데 약 3~5분정도 걸렸던 것 같다. 머릿속에서만 계산하니까 처음에 계속 헷갈리다가 손에 펜과 노트를 쥐는 순간 풀었다.답을 그림으로 나타내면 다음과 같다.각 스택의 명칭을 임의로 Stack for EnQueue, Stack for DeQueue로 지었다. (편하게 인큐스택, 디큐스택으로 부르겠다.) 상황 A. 데이터를 EnQueue 할 때.1. 디큐스택이 비어있는지 확인한다.2. 디큐스택이 비어있지 않다면 디큐스택에 있는 모든 데이터를 pop해서 인큐스택에 push한다.3. EnQueue할 데이터를 인큐스택에 하나씩 push..
평소 독학하던, 하지만 제대로 하고 있는지 방향을 의심하게 만드는 과목 알고리즘..다른 이들과 공유가 필요하다싶어 코딩인터뷰 스터디에 가입했다.랜덤으로 한 사람이 푸는 사람으로 지목이 되면, 다른 사람은 알고리즘 관련 문제를 내고, 푸는 사람은 멋지게 화이트보드를 이용해 풀어내면 된다.내가 아는 문제를 아는 방식으로 풀어낼 경우도 있을 것이고, 모르는 문제를 번뜩이는 아이디어로 풀어낼 경우도 있을 것이다.아는 문제를 생각지도 못하던 방식으로 풀어내는 것을 볼 수도 있겠지.여기는 그러한 문제들을 올려볼까 한다.