본문 바로가기
CODING/BAEKJOON

백준 파이썬 3단계 for문 문제풀이 : 2739, 10950, 8393, 15552, 2741, 2742, 11021, 11022, 2438, 2439, 10871

by pharmerci 2021. 12. 15.
728x90

푸는데 좀 힘들어따,,,^^

C로 풀었으면 쉬웠겠지만 처음하는 파이썬으로 하려니까 넘 어려웠다.

중간에 답지 본거 두문제 있는데, 답을 보고 오히려 좀 많은걸 알게된 듯 해서 좋았다.

 

 

 

 

 

아래에 답이 있습니다


2739

숫자 하나를 입력받으면 그 해당하는 수의 구구단을 출력하는 문제이다.

 

 

파이썬의 for문은 다양한 형태로 사용되는 것 같았다.

내가 제일 많이 활용한 방법은 for i in range() 방법이다.

i가 for문 안에서 사용되는 변수 이름이고 range안에 있는 숫자는 범위를 가르킨다.

 

이 문제처럼 range(1,10)으로 설정하면

1부터 9까지 차례대로 1씩 증가한다.

 

그리고 프린트할 때 여러 변수를 한번에 프린트할 경우에는 %안에다가 변수들을 차례로 넣어주면 된다.)

 

 

 

 

 


10950

 

이 문제는 T를 받고 T번동안 숫자 두개를 받아서 두개를 더한 값을 출력하는 문제이다.

 

그니까 예를들어 3을 입력하면

1 2

3

2 4

6

3 3

6

이런식으로 출력이 자동으로 되게 만들어야 한다.

 

 

T입력 받고

두개의 문자를 분리해서 입력 받은 다음에 각각을 int형으로 만들어주고 둘을 더한 값을 출력해준다.

이것은 0이 T-1이 될 때까지 즉 T번 시행된다.

 

 

 

 

 


8393

이 문제는 숫자 하나를 입력받고 그 숫자까지 1부터 차례대로 더해나간 다음

그 합을 출력하는 문제이다.

 

그니까 3을 입력하면 1+2+3해서 6이 출력되는! 문제이다.

 

사실 n(n+1)/2 이렇게 하면 쉽게 끝나지만

for문을 테마로 한 문제니까 for문을 이용해보자.

 

 

n에 정수를 입력받고

sum변수를 0으로 일단 설정해두고 1부터 n까지 차례대로 증가하면서 더한 값을 sum에 저장한다.

 

반복이 끝나면 sum을 출력한다.

 

 

 

 

 


15552

이건 아까랑 같은 문제인데

런타임오류를 방지하고 빠르게 문제를 해결하기 위해서

sys.stdin.readline() 함수를 써야하는 문제이다.

 

 

이 문제는 사실 답을 봤다. 저 함수가 뭔지도 모르기 때문

 

import는 모듈을 불러오는 함수이다. 저 sys 어쩌구 함수를 쓰기 위해서는 일단 sys모듈을 불러와야 한다.

 

그리고 T에 숫자 입력받고

T만큼 반복할건데

여기서 a랑 b를 한번에 stdin.readline함수를 써줬다.

map을 쓰면 각각 함수가 실행되고 분리가 되면서 int형으로 변환해준다.

10 12 이렇게 입력하면 10 // 12로 나누고 각각 정수형이 된다는 뜻!!

그다음에 더해서 출력

 

T가 엄청 커지게 되면 이 함수를 쓰는게 낫겠다.

 

 

 

 

 


2741

이 문제는 숫자 하나를 받으면 1부터 그 숫자까지 차례대로 출력하는 문제이다.

 

 

N을 정수형으로 입력받고 1부터 N까지 프린트한다.

여기서 range안에를 그냥 range(N) 으로 하면 0부터 N-1까지 출력되기 때문에 범위를 정확히 지정해줘야 한다.

 

 

 

 

 


2742

이건 숫자를 입력받으면 역순으로 출력하는 문제이다.

 

 

N을 정수형으로 입력받고 2741번과 마찬가지로 반복문을 돌리는데 프린트 하는 순서가 다르다.

큰수부터 출력해야 하니까 N+1-i 이렇게 설정해주었다.

그러면 맨 처음에 i값은 1이니까 N이 출력될 것이고 맨 마지막 i값은 N이니까 1이 출력될 것이다.

 

 

 

 

 


11021

 

이 문제는 앞전에서 풀었던 숫자 받고 그 횟수만큼 두개의 정수를 받아 더해서 출력하는 문제의 업그레이드 버전이다.

똑같은데 출력 형태가

Case #n : a

이런 형태이다. n은 1부터 처음에 입력받은 수만큼 1씩 증가하고

a는 받은 두개의 정수를 더한 값이다.

 

 

 

푸는 법은 그리 어렵지 않다.

위에 나와있는 문제들 다 종합하면 된당

 

 

 

 

 


11022

이건 또 바로 위 문제의 한단계 업그레이드 버전이다.

출력 방식이

Case #n: a + b = c

이렇게 되어야 한다.

 

 

어렵지 않다!

 

 

 

 

 

 


2438

 

이 문제는 입력받은 숫자의 개수만큼 별을 찍어내는 문제이다.

예를 들어 5라고 입력하면

*

**

***

****

*****

이렇게 출력된다.

 

 

이 문제는 이중 for문을 사용하여 해결했다.

각 줄에 별을 찍는 용도로 1개(i)

그리고 줄을 넘기기 위한 용도로 1개를 사용했다.(j)

end라는 친구를 이용하였는데 원래 print는 한번 하면 줄이 바뀌는데 여기서는 end를 사용해서 반복문이 끝날때까지는 줄이 안바뀌도록 해주었다. 

 

 

 

 

 


2439

이 문제는 아까 문제랑 반대이다.

입력받은 숫자만큼 별을 찍기는 하는데

    *

   **

  ***

 ****

*****

이런 식으로 출력되어야 한다.

 

 

이 문제는 답을 봤다. 아무리 해도 안돼서,,,,,

위에 문제는 내가 이중 for문을 사용했는데 여기서는 곱하기로 쉽게 풀어버렸다.

공백을 N-i번 출력하고 뒤이어 별을 i번 출력하는

아주 쉽고 간단해보이는 형태,,,

앞으로 잘 이용해야겠따,,

 

 

 

 

 


10871

이 문제는 두 수를 입력받는다. ㄱ이랑 ㄴ이라고 하자

그러면 ㄱ개만큼 숫자들을 입력받은 다음에

ㄴ보다 작은 숫자만 다시 출력하는 문제이다.

 

 

이것도 답을 봤다 ㅎㅎ

 

일단 두 수를 입력받는다 각각은 띄어쓰기로 분리되며 각각 int형으로 변환된다.

 

그리고 A라는 리스트에 입력을 받았는데 이 배열 만드는게 어려웠다. 이것도 각각 띄어쓰기로 분리되고 정수형으로 변환된다.

 

그다음에 N번 반복하면서 i번째에 있는 숫자가 X보다 작으면 출력하고 한칸 띄우는 작업을 반복한다.

여기서는 end=" "로 설정했는데, 이렇게 하면 숫자 하나가 출력되고 한줄 넘어가서 출력되는게 아니라 한칸 띄어쓰기 하고 출력된다.

 

end 없으면 ->

1

2

 

end=" " 있으면 ->

1 2

 

이런거쥐

 

 

 

 

 

728x90