Python

07. Python 기초 간단한 문제들

우아지마야 2019. 6. 23. 19:18

이제부터는 제가 개인적으로 여러 학원을 다니면서 봤던 문제 혹은 학교 수업을 들으면서 봤던 문제들 중에서 제가 기억을 하면서 가장 자주 나왔던 문제들을 나열했습니다. 처음 문제는 퀴즈로 종종 물어보고 나머지는 숙제 잘하면 시험에도 나왔던 문제들입니다.너무 심각하게 생각하면서 푸는 문제들은 아닙니다. 모든 문제가 간단한 코딩 규칙 및 몇 가지 함수를 이용해서 아주 쉽게 구현이 가능합니다. 막상 시험이나 숙제할 때 집중을 안 해서 어렵게 느껴지는 거지 막상 답을 보면 아~ 이러면서 쉽게 이해를 합니다. 그러니 생각을 해서 답을 찾아 보시기 바랍니다. 나중에 시간이 되면 제가 푼 방식을 답으로 해서 올리겠습니다. (참고로 제가 쓴 코딩은 여러가지 답 중 하나입니다. 코딩은 답이 절대로 하나일 수가 없습니다. 어떻게 코딩을 쓰는 방식은 개인 취향도 들어가기 때문에 꼭 제가 한 방식대로 할 필요는 없습니다. 결과만 같으면 과정은 안 중요합니다.)

문제 0. 반복문과 input함수를 이용해서 아래의 그림이 나오도록 하세요. 혹시 User가 줄의 수 입력을 20이상으로 입력을 한 경우에는, 다시 줄의 수를 입력해달라고 합니다. 그리고 이것을 그냥 쭉 나열하지 마시고, 함수를 하나 만들어서 줄의 수 입력을 함수의 입력으로 넣어서 print 하게끔 만드세요.

여기서 if문도 하나 들어가야 합니다.왜냐하면 User가 잘못된 값을 넣었을 경우를 판단하기 위해서 하나의 if문이 필요합니다. 그리고 잘못 입력이 들어왔을 경우, 계속 다시 잘 입력하라고 물어야 하기 때문에 while 반복문을 이용한 무한 룹을 만들어야 합니다. 무한 룹에서 계속 돌다가, User가 정상적인 입력을 넣었을 때 함수가 시작되게끔 하시면 됩니다.

줄이 5줄인 경우는 아래와 같이 나오면 됩니다.

줄이 10줄인 경우 아래와 같이 나오면 됩니다.

이 위의 문제는 정말 기초 문제입니다. 컴퓨터 언어 공부(C, C++, Java, Python, Matlab 등등)을 하면서 반복문 강의가 끝나면 대부분 위에 문제와 같은 형식으로 숙제를 내주든 혹은 수업 퀴즈로 해주던 하라고 할 것입니다. 그만큼 반복문을 이해를 잘했나 못했나 하는데 판단을 하는데 이것만큼 좋은 게 없어서 그렇습니다. 위에서는 제일 간단합니다. 왜냐하면 그냥 왼쪽에서부터 하나씩 늘려가면서 print함수를 이용해서 Display를하면 되기 때문에 쉬운데, 이것을 더 다양한 방법으로 하라고 아마 할 것입니다. 위에 문제를 선생님 혹은 교수가 이렇게 하면 위에처럼 나와요. 그럼 아래와 같은 것 해보세요 라고 숙제 혹은 퀴즈를 줄 것입니다.

 

위에 같은 경우는 처음 예시와 거의 비슷한데, 첫 줄에서 가장 많이 나오게 하고 점차적으로 하나씩 줄여가는 방식입니다.

위에 방식은 처음 2개보다는 좀 더 난이도가 높습니다. (그래도 기초이니 그렇게 어려운 건 아닙니다.) 처음 2문제 같은 경우는 string이 처음부터 *표시가 차곡차곡 저장한 다음에 print를 하면 끝나는 간단한 문제이지만, 바로 위의 문제 같은 경우는 string처음에 “ “ 빈 스페이스를 하나 하나씩 저장을 한 다음에 마지막에 별표를 알맞은 수를 저장한 다음에 print를 하면 됩니다. 예를 들어서 처음에 입력을 5로 했을 경우, 5개의 줄이 나옵니다. 그때 처음 줄은 4개의 빈칸과 하나의 별표가 print되어야 합니다.

위에 문제는 바로 전 문제를 역으로 한 것입니다. 위에 것을 풀었으면 문제없이 풀 수 있다고 생각합니다.

예전에는 왜 귀찮게 이런 문제를 풀지라고 생각을 했는데, 나름 코딩을 좀 하고 보니까, 여기서 배우는 부분이 참 많습니다. 첫째로 당연히 반복문의 이해를 확인을 할 수가 있습니다. 두번째로는 반복문의 시작과 끝을 이해하게 됩니다. 예를 들어서 줄 수 입력이 5이면 Display될 때 나와야 하는 줄의 수는 꼭 5개 줄이 나와야 하고, 그거에 맞게 별(*)의 수가 Display되어야합니다. 그런데, 여기서 반복문의 시작점과 끝점을 이해를 못하면 위에 나온 문제들을 풀 때 고생을 많이 할 것입니다.그리고 처음 반복문 시작할 때와, 마지막으로 반복문이 끝날 때는 언제나 주의를 해야 합니다. 처음과 마지막에 나오는 값(혹은 Display)이 내가 처음에 생각한 그 값들이 나오는지 확인을 해야 합니다. 일반적으로 중간에 계속 반복되는 부분에서 오류가 나는 경우는 드뭅니다. 하지만, 처음 혹은 끝에 도는 반복문에서 오류가 발생하는 일은 비일비재합니다. 그러니 꼭 처음 점과 끝점을 이해 잘해 주시기 바랍니다.

위에 문제를 잘 해결했으면 이제 직각 삼각형 모양으로 * print하지 말고, 이등변 삼각형이 나오게끔 print를 해보시기 바랍니다.

가장 쉬운 방법은 반으로 나눠서 보면 위에 풀었던 문제와 똑같습니다. 그러면 위에 푼 문제 답을 합치면 될 것 같네요.

이렇게 해서 위에 문제를 풀면 마지막으로 바로 위 문제를 푼 모양을 펼치면 다이아몬드 모양이 나올 텐데, *을print 해서 다이아몬드 모양이 나오게끔 하시면 됩니다.

여기까지 풀었으면 반복문 어느 정도 이해를 했고, 시작점과 끝점을 어떻게 넣어야 하는지 이해를 했다고 봅니다.

문제 1. 반지름의 값을 받아서 구의 부피와 겉넓이를 구하는 코드를 만드세요.

구의 부피를 구하는 공식 : (4/3) * r3 * π

구의 겉넓이 구하는 공식 : 4 * r2 * π

예시

힌트

구의 반지름 값을 입력(input함수 이용)해서 받은 다음 위의 2개의 공식을 이용해서 부피와 겉넓이를 구합니다. 그리고 그 2개의 값을 print를 하면 됩니다.

 

문제 2. 근의 공식을 이용해서 해를 찾는 코드를 만드세요

User로부터 (ax2+bx+c =0) a,b,c,의 계수를 받아서 2개의 해를 찾는 코드를 만드세요.

(해가 없는 경우는 없다로 나와야 하고, 하나인 경우는 하나 나와야 하고, 2개인 경우는 2개의 해를 print 하면 됩니다.)

예시

힌트

계수를 꼭 한 번에 다 받을 필요는 없습니다. 그냥 input함수를 여러 번 사용해도 상관없습니다.그냥 한 번에 할 수도 있구나 이 정도로 하고 넘어가면 됩니다.

해가 없는지 있는지 판단하는 것을 바탕으로 if문을 사용하면 쉽게 코드 할 수 있습니다.

 

문제 3. 로또 번호 생성하는 코드를 만드세요.

1~45 숫자 중에서 무작위로 6개를 선택해서 print 하면 됩니다.

같은 번호가 존재해서는 안됩니다. 같은 번호가 나올 경우 다시 뽑아서 모든 6개의 숫자가 다르게 나오도록 해야 합니다.

예시

저 같은 경우는 로또 횟수를 입력으로 해서 총 로또 횟수만큼 print 하게 했습니다.

(일반적으로 5번까지가 한 장에 나와서 5로 해서 예시를 보였습니다. 😊)

힌트

일단 무작위로 뽑는 거니까 random함수를 사용해야 합니다.

여러 방법으로 가능한데, while 혹은 for을 사용하는 게 가장 일반적입니다.

새로 뽑을 때 이전까지 뽑은 숫자와 비교하면서 같은 것이 있는지 없는지 판단을 하고, 있을 경우 새로운 숫자를 뽑으면 됩니다. 그리고 마지막으로 sort를 해서 작은 수에서 큰 수 순서로 나오게 하면 됩니다.

(이것을 통해서 로또를 사서 성공하시면 알려주세요~ 😊)

문제 4

UP And Down 게임

컴퓨터가 무작위로 숫자를 1~100 사이에 숫자를 선택합니다.

User가 숫자를 무작위로(1~100) 숫자를 정하면 컴퓨터가 선택한 숫자가 그 수보다 큰지 작은 지 혹은 잘 선택했는지 알려줍니다. 반복해서 컴퓨터가 선택한 숫자를 맞추는 게임을 코드로 작성하면 됩니다. 마지막에 컴퓨터가 선택한 숫자를 맞추면 컴퓨터가 생각한 숫자와 몇 번 만에 맞추었는지 print 하시면 됩니다.

예시

잘못된 입력을 넣은 경우

저 같은 경우는 고를 수 있는 범위를 알려줘서 잘못된 숫자를 안 부르게 했고, 잘못된 입력을 넣으면 잘못된 입력입니다 라고 print 하고 다시 숫자를 선택하게끔 합니다.

힌트

숫자 입력 시, 잘못된 숫자가 입력이 들어오면 다시 입력하라고 해야 합니다. 예를 들어서 50에서 Up이라고 했는데, 40이라고 입력을 하면 잘못된 입력이기 때문에 이 경우에는 다시 숫자를 입력하라고 해야 합니다.

마지막으로 다른 여러 가지 룰을 추가해도 됩니다. 예를 들어서 잘못된 숫자를 3번 입력하면 GameOver로 끝내는 방법도 있고, 횟수를 몇 번안에 정답을 맞히지 못하면 GameOver 시키는 추가 룰을 추가해도 됩니다. (숙제나 이런 것 할 때 extra credit 형식으로 추가하라고 하는 경우가 많습니다. 혹은 그냥 숙제에 포함되어 있기도 하고요)

간단한 게임을 코드로 표현하는 것을 숙제나 혹은 예시로 많이 이용합니다. 그래서 연습할 때 자주 이용하는 게임 중 하나를 정해서 코딩 연습하는 것을 추천합니다.