천상낙원

'ACM 퀴즈'에 해당되는 글 19건

  1. 유쾌한 점퍼 (Jolly jumpers) 2
  2. The 3n + 1 problem 7
  3. 프로그래밍 문제 풀이 (Programming Challenges)

유쾌한 점퍼 (Jolly jumpers)

ACM 퀴즈


n>0인 정수의 수열에서 앞, 뒤 수의 차이의 절대값들이 1에서 n-1까지의 가능한 모든 값을 가진다면 jolly jumper라 한다. 다음의 예를 보자.

1 4 2 3
위 예는 차의 절대값이 3, 2, 1을 가지기 때문에 jolly jumper이다. 정수 하나일 경우도 jolly jumper라 정한다. 수열이 jolly jumper인지 확인하는 프로그램을 작성하라.


입력
각 라인은 맨 앞에 3000 미만의 정수 n이 적혀있고, 그 뒤로 n개의 정수가 나온다.

출력
각 input에 따라 'Jolly' 또는 'Not jolly'를 출력한다.

입력 예
4 1 4 2 3
5 1 4 2 -1 6

출력 예
Jolly
Not jolly

참고사항
1. 입력 수열에서 첫 수는 몇개의 정수를 입력받을지를 의미한다.
2. 차의 절대값은 반드시 정렬되어 있어야한다?!?
4 1 4 2 3의 경우 차의 절대값은 3, 2, 1이 된다.
4 1 3 6 5의 경우 차의 절대값은 2, 3, 1이 된다.
사이트에서는 두 경우 모두 solved를 보여준다. 어찌 된 것인가?

'ACM 퀴즈' 카테고리의 다른 글

WERTYU  (0) 2006.01.13
The 3n + 1 problem  (7) 2006.01.12
프로그래밍 문제 풀이 (Programming Challenges)  (0) 2006.01.12

The 3n + 1 problem

ACM 퀴즈


다음과 같은 수열을 생성하는 알고리즘을 생각해보자. 정수 n부터 시작한다. n이 짝수이면 1을 곱하고, 홀수이면 3을 곱하고 1을 더한다. 이 과정을 n=1이 될때까지 반복한다. 예를 들어, n=22이면 다음과 같은 수열을 생성한다.

22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

이 알고리즘은 모든 정수에서 n=1이 되어 종료될 것으로 추측된다.(아직 증명되지는 않았다.)

입력 n에 대해서 n의 cycle-length는 1을 포함하여 생성된 수의 개수이다. 위의 예에서 22의 cycle-length는 16이다. 두 수 i와 j가 주어지면 i와 j사이의 모든 수의 cycle-length 중 가장 큰 값을 구한다.


입력
한 줄에 i와 j가 연속하여 입력된다. i와 j는 1,000,000보다 작고 0보다 크다.

출력
입력된 정수쌍 i, j (입력된 순서대로) 그리고 가장 큰 cycle-length를 출력한다. 이 세 숫자는 스페이스 한칸으로 구분한다.

Sample Input
1 10
100 200
201 210
900 1000

Sample Output
1 10 20
100 200 125
201 210 89
900 1000 174

참고사항 (제가 어려움을 겪었던 사항입니다)

1. 입력은 한번만 받고 끝나는 것이 아니라 계속 입력 받도록 합니다.

2. 계속 입력을 받을 때 최대 cycle length를 초기화 해줘야 함에 주의합니다.

3. 큰 수가 먼저 입력되는 경우를 고려해야 합니다. 작은 수 먼저 입력으로 들어오리란 보장은 없습니다. 입력 예에 한정해서 생각하면 안되죠.

4. 마지막으로 수열은 int형의 범위를 넘어설 수 있다는 것을 고려해야 합니다. 수열을 int형 범위로 제한하면 1 999999 결과로 1 999999 476 출력됩니다. 그러나 unsigned int형 범위로 제한하면 1 999999 결과로 1 999999 525 출력됩니다. 이러한 현상은 원인은 다음과 같습니다. 최대 값이 나오는 수는 837799인데 int형으로 하면 59가 나옵니다. 어느 순간 값이 2974984576이 되는데 이것이 int형(32비트)의 경우 범위를 넘어서서 -1319982720 이 되버리는 결과를 초래합니다. 그래서 반드시 unsigned int로 해주어야 제대로 된 값이 나옵니다. 어이 없는건 submit에는 문제가 없다는 겁니다-_-;;

'ACM 퀴즈' 카테고리의 다른 글

WERTYU  (0) 2006.01.13
유쾌한 점퍼 (Jolly jumpers)  (2) 2006.01.12
프로그래밍 문제 풀이 (Programming Challenges)  (0) 2006.01.12

프로그래밍 문제 풀이 (Programming Challenges)

ACM 퀴즈
스터디 모임을 하면서 Programming Challenges란 곳을 알게 되었습니다. 문제가 주어지고 프로그래밍해서 소스를 올리면 로봇이 자동으로 검사해서 결과를 보여줍니다.



추측컨데 대강 아래와 같은 결과를 보여주는거 같습니다.
Solved - 짝짝짝! 잘 풀었어요!
Wrong answer - 에이~ 잘 좀 해봐요
Compilation error - 컴파일이 안되잖아-_-;;
Presentation error - 출력형태를 바꿔봐



프로그래밍 공부를 어떻게 할지 막막하던 차에 이 사이트를 알게 되서 좋네요. 한문제 한문제씩 풀어나가면서 공부하면 많은 도움이 될꺼 같습니다. 더불어 사이트가 영어로 되어있기 때문에 영어공부에도 조금이나마 도움이 될꺼 같습니다.

'ACM 퀴즈' 카테고리의 다른 글

WERTYU  (0) 2006.01.13
유쾌한 점퍼 (Jolly jumpers)  (2) 2006.01.12
The 3n + 1 problem  (7) 2006.01.12