출처 : https://www.acmicpc.net/problem/11729

정답 : https://github.com/stemp12/study/blob/master/acmicpc.net/2016.02/11729.cpp


이건 뭐..C언어를 처음배울때 재귀 공부한다고 해봤던거다. 복습개념으로 다시 해봤다.

소스는 누구걸 봐도 똑같을거다. 이 방법이 제일 심플하고 거의 공식과 같이 사용되고 있기 때문이다.

from, by, to를 기본으로 to by, by from을 기억해두고 그 사이에 출력을 해놓으면 경로를 전부 알수있다.


'Algorithm' 카테고리의 다른 글

[AC] 1535 안녕  (0) 2016.02.24
[AC] 1793 타일링  (0) 2016.02.24
[AC] 2251 물통  (0) 2016.02.24
[AC] 2239 스도쿠  (0) 2016.02.24
[AC] 1912 연속합  (0) 2016.02.24

출처 : https://www.acmicpc.net/problem/2251

정답 : https://github.com/stemp12/study/blob/master/acmicpc.net/2016.02/2251.cpp


문제가 시작부터 뭔가 복잡한 스멜이 난다. 결국 물을 여기저기 넣어두고 빼고 이걸 반복한다는 말인데...중복을 피하는것이 중요할것같다.

그리고 물이 최대 200L이다. 그럼 배열을 써서 간단히 할수있을것 같다.

그리고 물을 이동할때 모든 경우를 저장해놔야 중복을 피할수있을텐데, 맵을 쓰면 좋겠다.

그러나 A, B, C인데 3개의 인자를 전부 저장하면서 중복을 피하려면 tuple이라는걸 쓰면 된다.

http://www.cplusplus.com/reference/tuple/tuple/?kw=tuple

이곳을 참조하면 튜플에 대해 이해할수있다.

구조체를 사용하고자 한다면 map을 사용할수없다. 왜냐면 map에게 구조체를 인자로 주면 컴파일단계에서 에러가 난다. 이게 내가 뭔가 놓치고 있는 것 같으나, 일단 스킵하고  tuple을 쓰면 해결이 된다. 인자가 2개일때는 pair를 쓰고 3개부터는 tuple을쓰면된다. 그러나 tuple역시 한계가 있는데 내가 아는 바로는 10개정도가 한계이다. 그런데 사실상 5개이상부터는 tuple이 아닌 다른 방법을 찾아보는게 더 좋겠다.

아무튼 튜플을 사용하여 특정 컵이 다 차거나 빌때까지 이동을 계속 해주면서 체크해주면 된다.

그리고 A값이 0일때만 C의 데이터를 저장해야한다. 모든 경우에 대해서 중복을 계속 체크해주면서 피하면 제시간내에 정답을 낼 수 있다.


'Algorithm' 카테고리의 다른 글

[AC] 1793 타일링  (0) 2016.02.24
[AC] 11729 하노이 탑 이동 순서  (0) 2016.02.24
[AC] 2239 스도쿠  (0) 2016.02.24
[AC] 1912 연속합  (0) 2016.02.24
[AC] 5893 17배  (0) 2016.02.24

출처 : https://www.acmicpc.net/problem/2239

정답 : https://github.com/stemp12/study/blob/master/acmicpc.net/2016.02/2239.cpp


이문제와 거의 같다.

https://www.acmicpc.net/problem/2580

거의 1+1의 문제이다. 동일한 문제인것 같으나, 2239번 문제가 인풋이 조금 더 까다롭다.

아에 시작부터 인풋이 0으로만 이루어진 것이 들어왔을때 시간내에 출력할수있는지 체크하는 것이 효율적이다.

뿐만아니라 스도쿠 특성상 가로세로 그리고 해당 영역의 3x3사각형에 숫자가 각각 하나씩만 존재햐야하므로 이 부분을 계속 체크해줘야 하며 이게 효율적이느냐 아니냐가 이문제를 풀수있느냐 아니냐의 키워드가 된다.

처음에 나는 3x3검색시에 포문을 사용하여 검색하게 하였는데 81%쯤에서 시간초과가 난다. 

그래서 다시 bool변수로 바로바로 체크하게 하였고 결과적으로 정답을 맞았다. 그런데 bool함수를 더 두어 가로세로부분도 포문없이 검색하게하였다면 속도가 더빨라졌을거라고 생각한다.

굉장히 귀찮고 손이 많이 가는 문제였다. 하지만 기초적이고 생각할게 있는 괜찮은 문제라고 생각한다. 

'Algorithm' 카테고리의 다른 글

[AC] 11729 하노이 탑 이동 순서  (0) 2016.02.24
[AC] 2251 물통  (0) 2016.02.24
[AC] 1912 연속합  (0) 2016.02.24
[AC] 5893 17배  (0) 2016.02.24
[AC] 2643 색종이 올려 놓기  (0) 2016.02.24

출처 : https://www.acmicpc.net/problem/1912

정답 : https://github.com/stemp12/study/blob/master/acmicpc.net/2016.02/1912.cpp


과거에 풀었으나, 재채점으로 오답이 나와서 다시 풀었다.

알고리즘은 참 쉽다. 마이너스도 있고 플러스도 있는데 연속된 구간이 가장 큰 값을 찾는것이다.

방법은 0부터 차례대로 더해가면서 MAX를 계속 갱신하고, 값이 감소하면 카운팅을 다시 처음부터 하는 것이다.

이런식으로 전개를 하다보면 결국 MAX가 담기게 된다.

문제는 전부 마이너스로만 이루어질때인데 아마 이부분때문에 오답이 나온거 같다.

-1 -2 -3이 인풋이라면 최대값은 -1이 되는것이다.

다행히 틀린점을 빨리 찾은 문제였다.

'Algorithm' 카테고리의 다른 글

[AC] 2251 물통  (0) 2016.02.24
[AC] 2239 스도쿠  (0) 2016.02.24
[AC] 5893 17배  (0) 2016.02.24
[AC] 2643 색종이 올려 놓기  (0) 2016.02.24
[AC] 116500 좌표 정렬하기  (0) 2016.02.23

+ Recent posts