본문 바로가기

전체 글

(171)
algospot :: RESTORE 실험 데이터 복구하기 문제 : https://algospot.com/judge/problem/read/RESTORE알고리즘 문제 해결 전략 1권 p.329 [알고리즘 STEP. 1]결국 주어진 문자열 조각들을 모두 조합해서 이어보면서 총 길이가 최소가 되는 (= 겹치는 부분이 최대가 되는) 문자열을 출력하면 된다. 이는 외판원문제 (http://int-num.tistory.com/18)와 거의 똑같은 알고리즘이다. 거리 합의 최소를 반환하던걸 (겹치는)길이 합의 최대를 반환하도록 바꾸기만 하면 된다. 먼저 주어진 문자열 조각들의 겹치는 부분들의 길이를 먼저 구해서 행렬에 저장한다. *int calcCommon(int i , int j)i번째 문자열 뒤에 j번째 문자열을 붙일 때, 겹치는 길이를 반환한다. 1) i번째 문자열이..
algospot :: TSP2 Traveling Salesman Problem 2 문제 : https://algospot.com/judge/problem/read/TSP2알고리즘 문제 해결 전략 1권 p. 319주어진 문제와 책에 주어진 코드가 조금 다름 [알고리즘 STEP.1]지금 있는 도시와 지금까지 방문한 도시를 바탕으로, 남은 도시를 모두 방문하는 거리 합의 최소값을 재귀적으로 구해야 한다. *double cache[MAX][1
algospot :: DRAGON 드래곤 커브 문제 : https://algospot.com/judge/problem/read/DRAGON알고리즘 문제 해결 전략 1권 p.306 [알고리즘 STEP. 1]일단 주어진 세대의 문자열 전체를 출력하는 함수를 작성했다. 드레곤 커브 문자열은 세대가 1 이상일 때, X나 Y가 X+YF와 FX-Y로 치환된다.그렇다면 문자열 상에서 X나 Y를 만났을 때 세대가 1이상이라면 문자열을 치환하면서, 그 치환한 문자열에서 다시 세대가 1 이상일 때, X나 Y를 X+YF와 FX-Y로 치환하는, 즉, 재귀적으로 문자열을 치환하는 함수를 호출하면 된다. 이 함수가 아래의 void play(int n, string s)이다. 주어진 4개의 테스트케이스 중 첫 세개는 정상작동하지만, 네번째 테스트케이스는 너무 길어서 출력하는데..
algospot :: MORSE 모스 부호 사전 문제 : https://algospot.com/judge/problem/read/MORSE알고리즘 문제 해결 전략 1권 p.293 [알고리즘 STEP. 1]일단 '-' 와 'o'를 이용해서 만들수 있는 모든 조합을 모두 찾아서 해당 순서 k에 해당하는 문자열만 출력했다.n개의 o와 m개의 -로 모스부호를 만들며, 사전순이므로 -가 o보다 앞에 나와야 한다. * void play(int n, int m, string ret)ret이라는 주어진 문자열에 n개의 o와 m개의 -로 만든 모스부호를 이어붙이는 함수이다. n==0, m==0이라면 주어진 문자를 모두 사용하여 하나의 문자열을 완성한 것이다. 하나의 문자열을 완성할 때 마다 k를 하나씩 줄여가면, k==1일 때 원하는 타겟 문자열을 출력할 수 있다. ..
algospot :: PACKING 여행 짐 싸기 문제 : https://algospot.com/judge/problem/read/PACKING 알고리즘 문제해결전략 1권 p.281 가능한 물건의 조합을 하나하나 검사해서, 정해진 무게 제한 안에서 최대 절박도를 내는 물건의 조합을 찾아내는 문제다. [내가 헤맨 부분] - 최대 절박도를 찾는것 까지는 동적 계획법으로 쉽게 떠올릴 수 있는데, 물건들의 이름을 출력하는 부분에서 막혔다. - memset함수를 잘못 이용해서 몇번이나 틀렸다. 값을 직접 계산해서 3번째 인자에 넣고 있었는데, 그냥 sizeof를 이용하는게 정확하다. memset(target, value, sizeof(target)) [알고리즘] * 물건들의 index를 동적계획법에 이용하면 문제가 간단해진다. * int play(int inde..
algospot :: TICTACTOE 틱택토 알고리즘 문제해결전략 책을 바탕으로 코드를 작성함 1) 캐시 3*3 보드이고, 각 칸에는 x, o, . 3가지 케이스가 있으므로 이를 9자리의 3진수 정수로 표현할 수 있음. => int cache[MAX]; 보드판을 받아서 그에 대응하는 9자리의 3진수 정수로 변환해주는 함수(int bijection()) 를 활용하여 캐시를 채워줌. 캐시에는 현재 보드판에서 다음 턴(x 또는 o) 사람의 최선이 이기는것, 지는것, 비기는 것 중 어느것인지를 저장. 2) 재귀함수 보드판에서 이번에 둘 사람에게 일어날 수 있는 최대를 저장한다고 하자. 예를들어 이번에 어디에 두느냐에 따라 이길수도, 질수도, 비길수도 있다면 '이긴다'를 저장하고지거나 비긴다면 '비긴다'를질수밖에 없다면 '진다'를 저장한다. 이긴다는 1, ..
Stanford iOS (4) 파이를 추가 다음 강의를 보고 작성한 필기입니다. https://www.youtube.com/channel/UCYVp6suz7ztKAKY8jpfACXA ###1 digit이 아니라 operation임 perfomOperation이라는 액션에 연결(드래그 해서 ..) 그냥 currentTitle! 말고 want to unwrap only if sender is set. if 안에서만 mathematicalSymbol is defined display.text = String(M_PI) //M_PI create new string that is double ###2 문제점 1 : ... 이 생김 label 설정을 이렇게 ###3 문제점 2 : 뒤에 파이가 붙음 이런식으로 뒤에 파이가 붙어서 나옴. operation이라서..
Stanford iOS (3) 레이블 만들기 다음 강의를 보고 작성한 필기입니다. https://www.youtube.com/channel/UCYVp6suz7ztKAKY8jpfACXA ###1 레이블 추가 레이블 : communication comming from the controller 전에 버튼 만들때 했던거랑 똑같이 1. 팔레트에서 끌어오기 2. 옵션키 누르고 코드로 드래그 이번에는 Connection : Outlet으로 설정 @IBOutlet weak var display: UILabel! ! 도 optional 이라는 뜻이라서 ?로 바꿀 수 있음(일단 ?로 바꾸자 ###2 let's append the number when we touch [결과] ###3 사용자가 입력중이지 않으면 초기화 userIsInMiddleOfTyping 변수 ..