전체 글(168)
-
backtracking 1
문제는 더블릿 25 backtracking에 있는 scales입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/scales/scales.php?pname=scales 입력받은 무게들의 합이 반이 되는 부분집합의 수를 구하는 문제입니다.이를 구하기 위해선 예제인 1 9 5 3 8로 볼 경우11 91 9 51 9 5 3 81 51 5 3등 모든 경우의 수를 봐야합니다.이럴 때 백트래킹을 쓰는데 재귀를 사용합니다.우선 1 9 5 3 8을 배열에 입력 받고 재귀를 호출하는 방식은 다음과 같습니다.현재 값으로 그냥 호출, 현재값에 다음값을 더해 호출두 경우 모두 각각 카운터값을 1씩 증가시킵니다.그럼 첫 번째 값 1에 대해 다음 호출은 1과 1+9가 됩니다.그 다음 호출은 1에..
2014.11.17 -
queue 1
문제는 더블릿 14 queue에 있는 catch_cow입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/catch_cow/catch_cow.php?pname=catch_cow 수 N과 K가 주어지고 N을 *2, +1, -1을 한번 할 때마다 카운터가 증가합니다. 이 때 N이 K가 될 수 있는 가장 적은 경로(카운터 크기)를 구하면 됩니다.친절하게 queue로 풀으라고 알려주고 있으니 그렇게 만듭니다. 기본적으로 리스트에 어떤 경우의 값을 다 넣어주고 반복이 진행되면서 그 값들을 전부 빼서 검사를 진행합니다. 그리고 그 결과 답이 나오지 않으면 다음 경우의 수들을 다시 리스트에 전부 넣어주고 검사하는 것을 반복합니다.먼저 첫 N값을 리스트에 넣습니다.그리고 bfs를 실행..
2014.11.15 -
if 1
문제는 더블릿 2 if에 있는 cross입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/cross/cross.php?pname=cross 두 줄이 교차하는지 아닌지를 검사하는 문제입니다.두 선이 교차하는 경우는 받아 들인 선의 각 끝점을 a1(큰 수), a2(작은 수)와 b1(큰 수), b2(작은 수)라고 했을 때,a1이 b1과 b2사이에 있고 a2가 b2보다 작을 때와 그 반대의 경우가 있습니다.
2014.11.14 -
옥상 2
문제는 더블릿 옥상에 있는 koi_vote입니다.문제 사이트 주소입니다.http://183.106.113.109/pool/koi_vote/koi_vote.php?pname=koi_vote 각 후보에게 투표한 점수가 가장 높으면서 높은 점수의 표를 가장 많이 받은 후보와 그 점수를 출력하면 되는 문제입니다.그냥 각 후보에 대해 점수를 합할 수 있는 변수와 1점, 2점, 3점 득표수를 저장할 수 있는 변수를 만들고 입력받을 때마다 각 변수에 알맞게 연산을 해준 다음에 if문을 이용해 결과를 출력해주면 됩니다.
2014.11.11 -
옥상 1
문제는 더블릿 옥상에 있는 natural입니다.문제 사이트 주소입니다.http://183.106.113.109/pool/natural/natural.php?pname=natural 받은 자연수들에 대해서 어떤 하나를 골라 다른 모든 수들과의 차의 절대값을 합했을 때 그 차가 가장 작으면서 수 자체도 작은 자연수를 찾는 문제입니다. 받은 모든 수들에 대해 2중 for문을 이용해 차를 계산할 자연수를 뽑고 다른 모든 수들에대해 차의 합을 구하는 연산을 하여도 모든 테스트에 대해 시간 초과가 뜨지 않습니다.
2014.11.11 -
divide and conquer 2
문제는 더블릿 20 divide and conquer에 있는 quad입니다.문제 사이트 주소입니다.http://183.106.113.109/30stair/quad/quad.php?pname=quad bfs를 이용한 재귀를 썼습니다. 우선 전체 사이즈를 검사합니다. 0과 1이 섞여 있으면 따로 선언한 배열의 첫 인덱스에 1을 넣습니다. 검사 과정을 함수로 만들어 영역을 4개로 분할하고 각 영역에 대해 함수를 호출하도록 합니다. 실제 호출은 하지 않고 큐에 넣어 예약합니다. 전체 영역 검사가 끝나고 큐에 데이터가 있으면 하나씩 꺼내 해당영역에 대해 검사하는 것을 반복합니다.검사를 할 때마다 검사 결과를 배열에 넣습니다. 저는 구조체를 선언하여 각 인덱스가 2가지 값을 가지도록하였습니다.모든 검사가 끝나면 배..
2014.11.09