알고리즘

2023-04-24 알고리즘 while,알고리즘

jung1911 2023. 4. 24. 23:58

while

반복문(조건문)

 

 

1.기본구조

 

while (조건문) :

    (수행)

 

 

 

2.while설명

  • 조건문이 참 인 경우 내부의 수행 부분을 진행하고, 거짓인 경우 빠져나간다.
  • 조건문 끝에 콜론 while True:
  • 수행 은 들여쓰기를 해야한다.
  • while 반복문은 중첩 가능!

 

 

3.while을 사용한 알고리즘 문제

 

 

문제

 

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

시도

 

입력값이 00  일때 while을 끝내야한다. 출력 값도 나오면 안되고 그래서 if a,b==0 을 사용하면 되겠다! 라고 생각하고 확인을 해보니 출력 값에 0 이 나와서 끝을 낸다. 그러면 split을 사용해서 a 입력값 b 입력값이 따로 나눠져 있다면? a+b 프린트로 출력값을 냈으니깐 아마 두개가 더해져서 나오는거라면? 그러면 두개의 값을 따로 나눠서 조건을 걸어주면?

 

 # 10952번
 while True:  
     a, b = map(int, input().split())  
     if a == 0 and b == 0:  
         break
     print(a + b)

 

해결

 

print의 a+b 라는 출력값으로 0+0 =0 이라는 결과값이 나오게 되었던거 같다. 그래서 and를 사용해 두 입력값을 나눠서 입력을 하니 정상적으로 작동한다.!

 

 

배운점

  • while에 조건을 걸 수 있다는 장점이 있다. 
  •  break 조건을 충족하면 밑에 머가 있든 다 무시하고 나온다.
  • continue  중간에 멈추고 처음으로 돌아간다.

 

 

4.그 밖에 다른 알고리즘 문제!(while, for)

 

 import random
 # 업다운 
 answer = random.randint(10, 100)
 while True:
     user_input = int(input())
     if user_input == answer:
         print("정답입니다")
         break
     elif user_input < answer:
         print("up")
     else:
         print("down")
 print("게임이 끝났습니다.")

  

  
  # 11021번
 T = int(input())

 for i in range(1, T+1):
     a, b = map(int, input().split()) 
     result = a + b
     print(f"Case #{i}: {result}")

 

1. 업다운 문제이다. 랜덤으로 10~100 숫자를 input으로 맞추면 되는건데 여기서 랜덤 숫자가 20이 나왔다  그리고 input 입력 값을 30을 넣었다. 그러면 랜덤의 숫자를 맞출려면 up, down 에서 down이 나와야 정답이 어느 숫자인지 추측이 가능해진다.

 

2.두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

입력 (5) 출력
1 1 Case #1: 2
2 3 Case #2: 5
3 4 Case #3: 7
9 8 Case #4: 17
5 2 Case #5: 7
   

 

문제점

여기서 가장 난해했던건  Case #1: 2  #1 부분의 숫자가 순서대로 출력되는 부분이다. 

 

시도

  • input 을 두 개 사용해서 1. 횟수  2. 더하기를 할 숫자 이렇게 사용해야겠다고 생각했다
  • Case #1: 2 이부분에 어떻게 횟수에 순서대로 숫자를 사용할 수 있을까? 라는 생각으로 range의 조건을 T 를 사용하고 0도 사용해보고 Case의 #1 부분에 임의로 시도를 해봤다.

 

해결

유심히 살펴보던 중 i의 값에 i = a+b 로 정하고 i 의 값을 계속 넣었다. 하.. 이게 무슨.. 코드에는 문제가 없었다. 다만 i 는 range를 더하는 꼴이 되어버렸다. 그래서 다른 변수로 a+b를 정의해주고 실행하니 정상 작동했다.!

 

 

배운점

 

항상 내가 어떻게 코드의 값을 넣어주고 이코드가 어떻게 돌아가는지 생각하면서 코드를 짜야겠다.