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

while 문

 

while문은 반복문의 한 종류로 반복적인 일을 효율적으로 처리하기 위해 사용합니다.

 

while 조건문:
    실행할 문장

 

while문의 기본 구조입니다.


조건문인 참이면 실행할 문장이 실행되고 참이 아니면 while문을 빠져나갑니다.


while문에 속하는 문장들은 들여쓰기를 해야 합니다. 하지 않을 경우 오류가 발생합니다.

 

a=10

while a>= 1:
    # 결과>>10 9 8 7 6 5 4 3 2 1 
    print(a, end=' ')
    a= a-1

 

a가 1보다 크거나 같은 경우 while문은 계속 실행됩니다.

 

보통 while문에 조건을 만족시키기 위해 a=a-1과 같은 연산식을 사용해주는 경우가 많습니다.

 

무한루프

while True:
    실행할 문장

 

while문에서는 무한히 반복한다는 의미인 무한 루프를 사용합니다.

 

대체적으로 무한 루프를 사용할 경우 무한루프를 빠져나갈 조건을 while문 안에 추가합니다.

 

a=10

while True:
    if a>= 1:
        # 결과>>10 9 8 7 6 5 4 3 2 1 
        print(a, end=' ')
        a= a-1
    else:
        break

 

a가 1보다 크거나 같은경우 if문을 실행합니다.

if문을 실행하면서 a의 값을 1씩 감소시킵니다.

 

a가 1씩 감소하다 if문의 조건을 충족하지 못하면 else문을 실행합니다.

이때 break를 통해 무한루프 while문에서 빠져나옵니다.

 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