본문 바로가기

C++ in Windows/Challenges

ICPC 대비 문제 9. 유쾌한 점퍼(Jolly Jumpers) 문제 9. 유쾌한 점퍼(Jolly Jumpers) PC/UVa ID: 110201/10038, 인기도: A, 성공률: 보통, 레벨: 1 >> 문제 n개의 정수(n>0)로 이루어진 수열에 대해 서로 인접해 있는 두 수의 차가 1에서 n-1까지의 값을 모두 가지면 그 수열을 유쾌한 점퍼라고 부른다. 예를 들어 다음과 같은 수열에서 1 4 2 3 앞뒤에 있는 수자 차의 절대 값이 각각 3, 2, 1이므로 이 수열은 유쾌한 점퍼가 된다. 이 정의에 따르면 중수 하나로 된 수열도 유쾌한 점퍼다. 어떤 수열이 유쾌한 점퍼인지 판단할 수 있는 프로그램을 작성하라. >> 입력 각 줄 맨 앞에는 3,000 이하의 정수가 있으며 그 뒤에는 수열을 나타내는 n개의 정수가 입력된다. >> 출력 입력된 각 줄에 대해 “Joll.. 더보기
ICPC 대비 문제 8. 호주식 투표법(Australian Voting) >> 문제 8. 호주식 투표법(Australian Voting) PC/UVa ID: 110108/10142, 인기도: B, 성공률: 낮음, 레벨: 1 >> 문제 호주식 투표 제도에서는 투표권자가 모든 후보에 대해 선호도 순으로 순위를 매긴다. 처음에는 1순위로 선택한 것만 집계하며 한 후보가 50% 초과 득표하면 그 후보가 바로 선출된다. 하지만 50% 초과 득표한 후보가 없으면 가장 적은 표를 받은 후보(둘 이상이 될 수도 있음)가 우선 탈락된다. 그리고 이렇게 탈락된 후보를 1순위로 찍었던 표만 다시 집계하여 아직 탈락되지 않은 후보들 가운데 가장 높은 선호도를 얻은 후보가 그 표를 얻는다. 이런 식으로 가장 약한 후보들을 탈락시키면서 그 다음 순위의 아직 탈락하지 않은 후보에게 표를 주는 과정을 5.. 더보기
ICPC 대비 문제 7. 체크 확인(Check the Check) >> 문제 7. 체크 확인(Check the Check) PC/UVa ID:110107/10196, 인기도: B, 성공률: 보통, 레벨 1 >> 문제 체스판 설정을 읽어서 킹이 공격받고 있는지(체크 상태인지) 확인하는 일을 해야 한다. 상대방의 다음 수에 의해 킹이 죽을 수 있는 위치에 있으면 킹이 체크 상태가 된다. 흰 말은 대문자로, 검은 말은 소문자로 표시된다. 흰 편은 항상 판의 아래쪽에, 검은 편은 판의 위쪽에 자리잡는다. 체스를 잘 모르는 사람들을 위해 각 말의 이동 방법을 설명하자면 다음과 같다. 폰(Pawn, p 또는 P): 한 번에 한 칸씩 앞으로만 갈 수 있다. 하지만 대각선에 있는 상대 말을 잡을 수 있으며 이 문제에서 이 부분에 주의해야 한다. 나이트(Knight, n 또는 N): .. 더보기
ICPC 대비 문제 6. 인터프리터(interpreter) >> 문제 6. 인터프리터(interpreter) PC/UVa ID: 110106/10033, 인기도: B, 성공률: 낮음, 레벨: 2 어떤 컴퓨터에 열 개의 레지스터와 1,000워드 분량의 램(RAM)이 있다. 각 레지스터 또는 램 위치에는 0 이상 999 이하의 세 자리 정수가 저장된다. 명령어는 세 자리 정수로 인코딩되며 램에 저장된다. 인코딩은 다음과 같다. 100 종료 2dn d 레지스터를 n으로 설정(0이상 9이하) 3dn d 레지스터에 n 더함 4dn d 레지스터에 n 곱함 5ds d 레지스터를 s 레지스터의 값으로 설정 6ds s 레지스터의 값을 d레지스터에 더함 7ds d 레지스터에 s 레지스터의 값을 곱함 8da d 레지스터를 a 레지스터에 저장된 주소의 램에 들어있는 값으로 설정 9s.. 더보기
ICPC 대비 문제 5. 그래픽 편집기(Graphical Editor) 문제 5. 그래픽 편집기(Graphical Editor) PC/UVa ID:110105/10267, 인기도:B, 성공률: 낮음, 레벨: 1 포토샵 같은 그래픽 편집기를 이용하면 텐스트 편집기에서 문서를 수정하는 것처럼 비트맵 이미지를 수정할 수 있다. 이미지는 픽셀로 이루어진 M X N 배열로 표현되며 각 픽셀마다 색이 주어진다. 간단한 대화형 그래픽 편집기를 흉내를 낼 수 있는 프로그램을 만들어보자. >> 입력 입력은 한줄에 하나씩의 편집기 명령으로 구성된다. 각 명령은 줄 맨 앞에 있는 대문자 한 개로 표현된 다. 매개변수가 필요한 경우에는 그 명령과 같은 줄에 스페이스로 분리되어 매개변수가 입력된다. 픽셀 좌표는 1이상 M이하의 열번호와 1 이상 N 이하의 행 번호, 이렇게 두 개의 정수로 표현되며.. 더보기
ICPC 대비 문제 4. LCD 디스플레이(LCD Disply) 문제 4. LCD 디스플레이(LCD Disply) PC/UVa ID: 1101014/706, 인기도:A, 성공률: 보통, 레벨:1 >> 문제 한 친구가 방금 새 컴퓨터를 샀다. 그친구가 지금까지 샀던 가장 강력한 컴퓨터는 공학용 전자 계산 기였다. 그런데 그 친구는 새 컴퓨터의 모니터보다 공학용 계산기에 있는 LCD 디스플레이가 더 좋다 며 크게 실망하고 말았다. 그 친구를 만족시킬 수 있도록 숫자를 LCD 디스플레이 방식으로 출력하는 프로그램을 만들어보자. >> 입력 입력 파일은 여러 줄로 구성되며 표시될 각각의 숫자마다 한줄씩 입력된다. 각 줄에는 s와 n이라는 두개 의 정수가 들어있으며 n은 출력될 수사(0 입출력예 소스 보기 #include using namespace std; class CNum.. 더보기
ICPC 대비 문제 3. 여행(The Trip) 문제 3. 여행(The Trip) PC/UVa ID: 110103/10137, 인기도: B, 성공률: 보통, 레벨: 1 >> 문제 일 년에 한 번씩 다른 여행지로 여행을 가는 학생 모임이 있다. 그 학생들은 지금까지 인디애나폴리 스, 피닉스, 필라델피아, 산호세, 아틀란타를 여행했다. 이번 봄에는 아인트호벤으로 여행을 갈 계획이다. 이 학생들은 여행 경비를 모두 똑같이 부담하기로 합의했지만 돈을 쓸 때마다 나눠서 내는 것은 별로 실용적이지 못하다. 그래서 한명씩 식비, 호텔비, 택시비, 비행기표를 부담하기로 한다. 여행이 끝난 후에 각 학생이 지출한 내역을 계산한 다음 1센트 단위 내에서 모든 학생들이 쓴 돈이 같도록 돈을 주고 받는다. 하지만 이전 여행의 경험에서 비추어보면 돈을 주고 받는 과정은 정말.. 더보기
ICPC 대비 문제 2. 지뢰찾기 문제 2. 지뢰찾기 PC/UVa ID:110102/10189, 인기도: A, 성공률:높음, 레벨: 1 지뢰 찾기를 해본 적있는 독자들이 많을 것이다. 이름은 잘 기억이 안나지만 어떤 운영체제에 이 작고 귀여운 게임이 깔려있다. 지뢰찾기는 M X N 크기의 지뢰밭에서 모든 지뢰의 위치를 찾아내는 게임이다. 이 게임에서는 각 칸에 인접한 칸에 몇 개의 지뢰가 있는지를 보여준다. 각 칸에는 최대 여덟 개의 인접한 칸이 있을수 있다. 아래에서 왼쪽에 있는 4X4 지뢰밭에는 지뢰 두개가 있으며 각각은 '*'문 자로 표시되어 있다. 이 지뢰밭을 방금 설명한 힌트 숫자로 표기하면 오른쪽에 있는 것과 같은 필드 가 만들어진다. *...*100 ....2210 .*..1*10 ....1110 >> 입력 입력은 임의 개수.. 더보기
ICPC 대비 문제 1. 3n+1문제 문제 1. 3n+1문제 PC/UVa ID 110101/100, 인기도:A, 성공률:낮음, 레벨:1 어떤 수열을 만들어내는 다음과 같은 알고리즘을 생각해보자. 어떤 정수 n에서 시작해 n이 짝수면 2로 나누고, 홀수면 3을 곱한 다음 1을 더한다. 이렇게 해서 새로 만들어진 숫자를 n으로 놓고 n=1이 될때까지 작업을 계속 반복한다. 예를들어, n=22이면 다음과 같은 수열이 만들어진다. 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 아직 증명되진 않았지만 모든 정수 n에 대해 이 알고리즘을 적용시키면 결국에는 n=1에 이르게 되는 것으로 추측된다. 그리고 이 가설은 적어도 1,000,000까지의 정수에 대해서는 참이다 n이라는 값이 입력되었을 때 1이 나올 때까지 만들어진 .. 더보기