1081 : [기초-종합] 주사위를 2개 던지면?(설명)


1부터 n까지, 1부터 m까지 숫자가 적힌
서로 다른 주사위 2개를 던졌을 때 나올 수 있는 모든 경우를 출력해보자.

참고
중첩의 원리...
반복 실행 구조도 조건 실행 구조와 마찬가지로 중첩의 원리가 적용된다.
반복 실행 구조를 중첩하면 원하는 반복 구조를 다양하게 만들어 낼 수 있다.

예시
int i, j;
int n=3, m=6;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
printf("%d %d ", i, j);
}
}

의 코드는
바깥쪽의 i가 1부터 n까지로 바뀌는 각각의 동안에
안쪽의 j가 1부터 m까지 변하며 출력된다.

중첩 반복되는 코드블록의 내용이 논리적으로 한 개의 단위이기 때문에
코드블록 기호를 생략하면 아래와 같이 작성할 수도 있다.

int i, j;
int n=3, m=6;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
printf("%d %d ", i, j);

반복 실행구조를 사용할 때에는
반복횟수를 기록해 두기 위해 i, j와 같은 변수를 선언해 사용해야 한다.

 

 

정답

a,b=input().split(' ')
a=int(a)
b=int(b)

for i in range(1,a+1):
    for j in range(1,b+1):
        print(i,j)

 

 


CodeUp 기초 100제 : https://codeup.kr/problemsetsol.php?psid=23

 1080 : [기초-종합] 언제까지 더해야 할까?


1, 2, 3 ... 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지
계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 계속 더한다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.

 

 

정답
a=input()
a=int(a)
su=0

for i in range(1,a):
    su= su + i
    if a <= su:
        print(i)
        break

 

모범 소스

a=input()

n=int(a)

i=0
s=0
while s<n :
    i+=1
    s+=i

print(i)

 

 


CodeUp 기초 100제 : https://codeup.kr/problemsetsol.php?psid=23

 1079 : [기초-종합] 원하는 문자가 입력될 때까지 반복 출력하기 


'q'가 입력될 때까지 입력한 문자를 계속 출력하는 프로그램을 작성해보자. 

 

 

정답
a=input().split(' ')

for i in a:
    print(i)
    if i == 'q':
        break

 

 

 

CodeUp 기초 100제 : https://codeup.kr/problemsetsol.php?psid=23

 1078 : [기초-종합] 짝수 합 구하기(설명)


정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.


참고
while( ) {...}, do {...} while( );, for(...; ...; ...) {...} 등의 반복문은 형태만 다르
고, 똑같은 성능을 발휘한다. 필요에 따라 편리한 것으로 골라 사용하면 된다.

예시
//아래의 예는 홀수일 경우만 더해 그 결과를 출력한다.
int sum=0;
int i, n;
scanf("%d", &n);
for(i=1; i<=n; i++)
{
if(i%2==1) sum=sum+i;
}

 

 

정답

a=input()
a=int(a)
su=0

for i in range(1,a+1):
    if i % 2 == 0:
        su =su + i

print(su)

 

 


CodeUp 기초 100제 : https://codeup.kr/problemsetsol.php?psid=23

 1076 : [기초-반복실행구조] 문자 1개 입력받아 알파벳 출력하기(설명)


영문자(a ~ z) 1개가 입력되었을 때 그 문자까지의 알파벳을 순서대로 출력해보자.


참고
do
{ //코드블록
...
}while(조건); //do~while( ) ; 구조는 반드시 마지막에 세미콜론(;)을 붙여야 한다.
구조를 사용하자.

do
{ //코드블록
...
}while(조건);
구조는 while( ) { ... } 과 유사한 반복 실행 구조를 만들 수 있는데
다른 점은 무조건 한 번은 실행된다는 것이다. 마지막에 세미콜론을 반드시 붙여야 한다.

예시
char x, t='a';
scanf("%c", &x);
do
{
printf("%c ", t);
t+=1; //t+=1; 는 t=t+1과 같은 의미이다.
}while(t<'z'+1); //의미 : t의 값이 'z'보다 작은 동안 반복된다.

** 복합 대입 연산자에 대해...
컴퓨터의 세상에서 반복되는 것은 다시 쓰기 귀찮다.
즉, 어딘가에 정의가 되어있다면 재사용하던가, 아니면 보다 간단히 쓰고 싶어한다.

복합 대입 연산자는 대입 연산자를 함께 사용해 보다 간단히 표현하는 방법이다.
예를 들어 어떤 연산자 X와 대입 연산자를 합쳐 "X="라고 표현하면,
이는 X 연산 후 대입하라는 의미를 간단히 나타내는 것이다.

+=, -=, *=, /=, %= ... 등의 형태들이 모두 가능하며 의미는 아래와 같다.

예를 들어

n = n + 3;

n += 3; 으로 간단히 표현할 수 있다.

n = n << 1;

n <<= 1; 로 간단히 표현할 수 있다.

아래는 서로 다른 형태이지만 같은 기능을 하는 코드들이다.
n++;
n=n+1;
n+=1;

 

정답

a=input()
a=ord(a)
b=ord('a')

while a >= b:
    print(chr(b), end=' ')
    b= b+1 

 

 

 1077 : [기초-반복실행구조] 정수 1개 입력받아 그 수까지 출력하기(설명)


정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.

for((반복전 실행/준비 내용); (조건 검사 내용); (한번 실행한 후 처리할 작업))
{ //코드블록
...
}
반복 구조를 사용하자.

참고
for((반복전 실행/준비내용); (조건 검사 내용); (한번 실행한 후 처리할 작업))
{ //코드블록
...
}
구조는 while( ) {...}, do {...} while( ); 구조와 같이
어떤 작업을 반복적으로 수행할 때 가장 일반적으로 많이 사용하는 구조이다.

while( ) {...}, do {...} while( ); 과 다르게
반복을 위한 초기화/준비, 조건검사, 반복 후 증감 등을 한 번에 작성할 수 있다.

for( ... ) 를 사용할 때에는 반복 실행되는 과정에 대해 정확히 이해할 필요가 있는데.
1. 반복 전 실행 수행(1번만 실행된다.)
2. 조건검사
3. 조건이 참이면 코드블록 실행
4. 코드블록 실행 후 증감 또는 처리 : 한 번 반복 후 처리
5. 조건검사
6. 조건이 참이면 코드블록 실행
...
의 순서로 처리된다.

예시
int i, n;
scanf("%d", &n);
for(i=0; i<=n; i++)
{
printf("%d ");
}
printf("\n");

** 일반적으로 반복 횟수를 카운트하면서 비교하기 위해 i 변수를 많이 사용한다.
i : index, iterator ?

 

정답

a=input()
a=int(a)

for i in range(a+1):
    print(i)

 

 


CodeUp 기초 100제 : https://codeup.kr/problemsetsol.php?psid=23

1074 : [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기1(설명) 


정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.


while(조건)
{
...
}
구조를 사용하자.

예시
int n;
scanf("%d", &n);
while(n!=0)
{
printf("%d", n);
n=n-1; //n--;와 같다.
}

 

정답

a=input()
a=int(a)

while a != 0:
    print(a)
    a= a-1

 

모범 소스

a=input()

n=int(a)

while n>=1 :
    print(n)
    n=n-1

 

 

 1075 : [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기2(설명)


정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.


예시
int n;
scanf("%d", &n);
while(n!=0)
{
n=n-1; //n--; 와 같다.
printf("%d", n);
}

 

정답

a=input()
a=int(a)
a= a-1

while a >= 0:
    print(a)
    a= a-1

 

모범 소스

a=input()

n=int(a)

while n>0 :
    n-=1
    print(n)

 

 


CodeUp 기초 100제 : https://codeup.kr/problemsetsol.php?psid=23

+ Recent posts