본문 바로가기

반응형

2019/03/13

(3)
[알고리즘 깨알 팁] 코드와 데이터를 분리하자 (테이블 만들기) 종만북에 나오는 명언이 하나 있습니다. '코드와 데이터를 분리하라.' 저는 코드와 데이터를 분리하는 기준을 다음과 같이 두고 있습니다. 코드 : 무언가를 하는 반복적인 행위.데이터 : 반복적인 행위를 하기 위한 데이터의 집합. 반복적인 행위가 이 데이터에 따라서 다른 결과를 도출함. 종만북에서도 데이터를 배열로 선언(테이블로 만듦)해서 배열을 순회하며 처리하라고 되어있습니다! 많은 분들이 쓰고 계신 예가 하나 있습니다. 바로 BFS에서 이동을 처리하는 경우이죠. 저는 2015년에 (x,y)를 이동하는 방법을 다음과 같이 만들었습니다. 1234567891011121314151617int x,y; void move(int d){ switch(d){ case 0: x -= 1; break; case 1: x ..
[삼성 기출 문제] 백준 5373 큐빙 문제 링크 어떻게 풀까? 진정한 시뮬레이션입니다.정말... 말 그대로 3x3x3 큐브의 U D F B L R을 시계방향과 반시계방향으로 돌리는 것을 구현하면 됩니다! -끝- 이라고 하기엔 너무 힘들고 가혹한 시뮬레이션 입니다.사람에 따라서는 코드 길이도 200~300줄까지 될겁니다. if문과 else문으로 떡칠이 되어있기 때문이죠! 아는 분의 협조를 구해서 가져온 코드의 일부분 입니다! 123456789101112131415161718192021222324252627282930313233343536 if (s == "U+") { Up_cw(a); } else if (s == "U-") { Up_cw(a); Up_cw(a); Up_cw(a); } else if (s == "D+") { Down_cw(a);..
[삼성 기출 문제] 백준 16235 나무 재테크 문제 링크 어떻게 풀까? 최적화를 조금 많이하다보니 문제를 살짝 극혐으로 풀었습니다. 저는 DP, 슬라이딩 윈도도 함께 사용했습니다.만약 슬라이딩 윈도를 잘 모르신다면 여기를 참고하세요 슬라이딩 윈도를 쓰는 이유! 이 문제를 잘 보시면 이전 년도의 나무들에 대한 정보는 전혀 필요가 없습니다.따라서, 현재 년도와 다음 년도에 쓰일 공간만 필요한 것 입니다. 그림에서 보듯이 이전 년도의 나무 개수 자료는 전혀 쓰지 않습니다. 따라서 위처럼, 현재 나무들의 정보를 토대로 다음 년도의 나무를 저장하기 위해선 딱 2개의 정보 배열이 필요합니다. 2개의 나무 배열을 가지고 있다고 하면, y년 이라고 했을때, [y%2^1] 나무 배열을 현재 배열로, [y%2] 배열을 내년 배열로 쓰면 됩니닷! 그리고! 나무들의 정보..

반응형