본문 바로가기

FOR15

1094. 이상한 출석 번호 부르기2 정보 선생님은 수업을 시작하기 전에 이상한 출석을 부른다. 학생들의 얼굴과 이름을 빨리 익히기 위해 번호를 무작위(랜덤)으로 부르는데, 영일이는 선생님이 부른 번호들을 기억하고 있다가 거꾸로 불러보는 것을 해보고 싶어졌다. 출석 번호를 n번 무작위로 불렀을 때, 부른 번호를 거꾸로 출력해 보자. 참고 배열에 순서대로 기록해 두고, 기록된 내용을 거꾸로 출력하면 된다. 예시 int n, i; int a[1000]={}; scanf("%d", &n); //개수 입력 받기 for(i=1; i=1; i--) printf("%d ", a[i]); //i 번 배열에 저장되어 있는 값 출력하기 입력 번호를 부른 횟수(n, 1 ~ 10000)가 첫 줄에 입력된다. n개의 랜덤 번호(k, 1 ~ 23)가 두 번째 줄에 .. 2023. 5. 11.
1093. 이상한 출석 번호 부르기1 정보 선생님은 수업을 시작하기 전에 이상한 출석을 부른다. 선생님은 출석부를 보고 번호를 부르는데, 학생들의 얼굴과 이름을 빨리 익히기 위해 번호를 무작위(랜덤)으로 부른다. 그리고 얼굴과 이름이 잘 기억되지 않는 학생들은 번호를 여러 번 불러 이름과 얼굴을 빨리 익히려고 하는 것이다. 출석 번호를 n번 무작위로 불렀을 때, 각 번호(1 ~ 23)가 불린 횟수를 각각 출력해보자. 참고 각 번호가 불린 횟수를 기록하고 출력하기 위해 변수 23개를 선언할 수도 있다. 하지만 C언어에서는 같은 이름에 번호를 붙여 사용하는 배열(array)을 사용할 수 있다. 이는 마치 아파트의 동 호수(예를 들어 a동 101호)와 같이 번호를 붙여 집을 구분하는 것과 비슷하다. 예를 들어 a동 101호를 다르게 표현하면 a[.. 2023. 5. 9.
1088. 3의 배수는 통과? 1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되, 3의 배수인 경우는 출력하지 않도록 만들어보자. 예를 들면, 1 2 4 5 7 8 10 11 13 14 ... 와 같이 출력하는 것이다. 참고 반복문 안에서 continue;가 실행되면 그 아래의 내용을 건너뛰고, 다음 반복을 수행한다. 즉, 다음 반복으로 넘어가는 것이다. 예시 for(i=1; i 2023. 5. 4.
1087. 여기까지! 이제 그만~ 1, 2, 3 ... 을 순서대로 계속 더해나갈 때, 그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자. 즉, 1부터 n까지 정수를 계속 더한다고 할 때, 어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다. 하지만, 이번에는 그 때의 합을 출력해야 한다. 예를 들어 57을 입력하면 1+2+3+...+8+9+10=55에 다시 11을 더해 66이 될 때, 그 값 66이 출력되어야 한다. 참고 조건문이나 반복문의 코드블록 안에서 break;가 실행되면 가장 가까운 반복 코드블록 구역의 밖으로 빠져나간다. 예시 int n, i, s=0; scanf("%d", &n); for(i=1; ; i++) //for 반목문에서 가운데의 조건이 빠진 경우 무한 반복된다. { s+=.. 2023. 5. 3.
1083. 3 6 9 게임의 왕이 되자! 3 6 9 게임을 하던 영일이는 3 6 9 게임에서 잦은 실수로 계속해서 벌칙을 받게 되었다. 3 6 9 게임의 왕이 되기 위한 마스터 프로그램을 작성해 보자. 참고 중첩의 원리 반복 실행 구조 안에 선택 실행 구조를 자유롭게 중첩할 수 있다. 예시 int i; for(i=1; i 2023. 4. 30.
1081. 주사위를 2개 던지면? 1부터 n까지, 1부터 m까지 숫자가 적힌 서로 다른 주사위 2개를 던졌을 때 나올 수 있는 모든 경우를 출력해보자. 참고 중첩의 원리... 반복 실행 구조도 조건 실행 구조와 마찬가지로 중첩의 원리가 적용된다. 반복 실행 구조를 중첩하면 원하는 반복 구조를 다양하게 만들어 낼 수 있다. 예시 int i, j; int n=3, m=6; for(i=1; i 2023. 4. 27.