알고리즘 공부를 위해 코드업 사이트(https://codeup.kr/)의 기초 100제를 시작합니다.

블로그에 올라온 모든 코드는 파이썬(Python)으로 작성되어 있습니다.   

 

Python의 기초 100제를 확인하기 위해서는 다음 사이트로 이동하면 됩니다. 

https://codeup.kr/problemsetsol.php?psid=33 

 

문제집 / Python 기초 100제

 

codeup.kr

 

6036 : [기초-산술연산] 단어 여러 번 출력하기(설명)(py)

순서대로 단어와 반복 횟수를 입력받아 반복 횟수 만큼 단어를 출력해보자.

 

▷ 참고

문자열 * 정수 또는 정수 * 문자열은 그 문자열을 여러 번 반복한 문자열을 만들어 준다.

 

▷ 해설

python은 문자열과 정수 사이의 연산을 지원한다.

문자열과 정수를 곱하면 문자열을 정수만큼 반복하게 된다.

w, n = input().split()
print(w*int(n))

 

6037 : [기초-산술연산] 문장 여러 번 출력하기(설명)(py)

반복 횟수를 입력 후 줄을 바꿔 공백이 포함된 문장을 입력받아 반복횟수 만큼 문장을 출력해보자.

 

▷ 참고

문자열 * 정수 또는 정수 * 문자열은 그 문자열을 여러 번 반복한 문자열을 만들어 준다.

 

▷ 해설

이번 문제에서는 문자열 자체에 공백이 있어서 수와 문자를 구분지기 위해 줄바꿈을 이용하였다.

이후 정수와 문자열의 곱을 통해 문장을 반복 출력하면 된다.

n = int(input())
s = input()
print(s*n)

 

6038 : [기초-산술연산] 정수 2개 입력받아 거듭제곱 계산하기(설명)(py)

정수 2개(a, b)를 입력받아
a를 b번 곱한 거듭제곱을 출력하는 프로그램을 작성해보자.

 

▷ 참고

python 언어에서는 거듭제곱을 계산하는 연산자(**)를 제공한다.
일반적으로 수학 식에서 거듭제곱을 표현하는 사용하는 서컴플렉스/케릿 기호(^)는 프로그래밍언어에서 다른 의미로 쓰인다.

 

▷ 해설

문자를 입력받아 정수로 형변환을 한 후 **을 이용하여 거듭제곱을 구한다.

숫자1 ** 숫자2 면 숫자1의 숫자2 제곱을 의미한다.

a, b = input().split()
c = int(a) ** int(b)
print(c)

 

6039 : [기초-산술연산] 실수 2개 입력받아 거듭제곱 계산하기(py)

실수 2개(f1, f2)를 입력받아
f1을 f2번 거듭제곱한 값을 출력하는 프로그램을 작성해보자.

 

▷ 참고

python 언어에서는 거듭제곱을 계산하는 연산자(**)를 제공한다.
일반적으로 수학 식에서 거듭제곱을 표현하는 사용하는 서컴플렉스/케릿 기호(^)는 프로그래밍언어에서 다른 의미로 쓰인다.

 

▷ 해설

문자를 입력받아 실수로 형변환을 한 후 **을 이용하여 거듭제곱을 구한다.

숫자1 ** 숫자2 면 숫자1의 숫자2 제곱을 의미한다.

a, b = input().split()
c = float(a) ** float(b)
print(c)

 

6040 : [기초-산술연산] 정수 2개 입력받아 나눈 몫 계산하기(설명)(py)

정수 2개(a, b) 를 입력받아 a를 b로 나눈 몫을 출력해보자.

 

▷ 참고

python언어에서는 나눈 몫을 계산하는 연산자(//, floor division)를 제공한다.
a//b 와 같이 작성하면, a를 b로 나눈 몫(quotient)을 계산해준다.
프로그래밍언어에 따라 이렇게 몫을 계산해주는 연산자가 없는 경우도 있다.

실수로 나눈 몫이 어떻게 계산될지도 생각해보자.

 

▷ 해설

문자를 입력받아 정수로 형변환을 한 후 //을 이용하여 몫을 구한다.

숫자1 // 숫자2 면 숫자1을 숫자2로 나눈 몫이다.

 

7을 1부터 7로 나눈 몫을 보자

숫자1 7 7 7 7 7 7 7
숫자2 1 2 3 4 5 6 7
7 3 2 1 1 1 1
a, b = input().split()
c = int(a) // int(b)
print(c)

알고리즘 공부를 위해 코드업 사이트(https://codeup.kr/)의 기초 100제를 시작합니다.

블로그에 올라온 모든 코드는 파이썬(Python)으로 작성되어 있습니다.   

 

Python의 기초 100제를 확인하기 위해서는 다음 사이트로 이동하면 됩니다. 

https://codeup.kr/problemsetsol.php?psid=33 

 

문제집 / Python 기초 100제

 

codeup.kr

 

6031 : [기초-값변환] 정수 입력받아 유니코드 문자로 변환하기(설명)(py)

10진 정수 1개를 입력받아
유니코드 문자로 출력해보자.

 

▷ 참고

입력은 기본적으로 모두 문자열로 입력되는 것이라고 할 수 있다. 
따라서, 입력 값이 문자/문자열/정수/실수인지에 따라서 먼저 정확하게 변환시킨 다음에 사용하거나 계산하는 것이 좋다.

예를 들어 123 이 입력 되었다고 한다면, 이건 정수일까? 문자열일까?
조금 생각해보면, 입력된 것만 보고는 그 값이 어떤 데이터인지 알 수 없다는 것을 쉽게 이해할 수 있다.
따라서, 그 입력 값을 어떻게 해석하고 변환할 지에 대해서 명확하게 작성해 주어야 하는 것이다. 

chr( )는 정수값->문자, ord( )는 문자->정수값 형태로 바꿔주는 서로 반대 방향으로 바꾸어 주는 기능을 한다.

 

▷ 해설

chr(숫자)는 숫자의 유니코드 값을 반환하는 함수이다.

c = int(input())
print(chr(c))

 

6032 : [기초-산술연산] 정수 1개 입력받아 부호 바꾸기(설명)(py)

입력된 정수의 부호를 바꿔 출력해보자.

 

▷ 참고

단항(unary) 연산자인 -(negative)를 변수 앞에 붙이면 부호가 반대인 값이 된다. 

 

▷ 해설

정수의 부호를 바꾸기 위해서는 -1을 곱하는 방법도 있지만 단항 연산자를 사용하면 더 간단한 코드를 작성 가능하다.

n = int(input())
print(n*-1)
n = int(input())
print(-n)

 

6033 : [기초-산술연산] 문자 1개 입력받아 다음 문자 출력하기(설명)(py)

문자 1개를 입력받아 그 다음 문자를 출력해보자.
영문자 'A'의 다음 문자는 'B'이고, 숫자 '0'의 다음 문자는 '1'이다.

 

▷ 참고

숫자는 수를 표현하는 문자로서 '0' 은 문자 그 자체를 의미하고, 0은 값을 의미한다.

 

아스키문자표에서 'A'는 10진수 65로 저장되고 'B'는 10진수 66으로 저장된다.
따라서, 문자도 값으로 덧셈을 할 수 있다. 어떤 문자의 값에 1을 더하면 그 다음 문자의 값이 된다.

 

▷ 해설

a와 b 등 문자를 입력받아야하므로 ord(문자)를 통해 문자를 유니코드로 변경한 값을 저장한다.

저장된 값을 이용해 chr(숫자)에 유니코드에 1을 더한 값을 넣어 다음 문자를 출력한다.

n = ord(input())
print(chr(n+1))

 

6034 : [기초-산술연산] 정수 2개 입력받아 차 계산하기(설명)(py)

정수 2개(a, b)를 입력받아 a에서 b를 뺀 차를 출력하는 프로그램을 작성해보자.

 

▷ 참고

수 - 수는 차(subtraction)가 계산된다.

 

▷ 해설

입력받은 값을 정수형으로 바꾸기 위해 int()로 형변환을 합니다.

그 후 두 값의 차를 구하기 위해서는 변수 a와 b를 -로 빼면 된다.

a, b = input().split()
c = int(a) - int(b)
print(c)

 

6035 : [기초-산술연산] 실수 2개 입력받아 곱 계산하기(설명)(py)

실수 2개(f1, f2)를 입력받아 곱을 출력하는 프로그램을 작성해보자.

 

▷ 참고

수 * 수는 곱(multiplication)이 계산된다.

 

▷ 해설

입력받은 값을 실수형으로 바꾸기 위해 float()로 형변환을 합니다.

그 후 두 값의 곱을 구하기 위해서는 변수 a와 b를 *로 곱하면 된다.

a, b = input().split()
c = float(a) * float(b)
print(c)

알고리즘 공부를 위해 코드업 사이트(https://codeup.kr/)의 기초 100제를 시작합니다.

블로그에 올라온 모든 코드는 파이썬(Python)으로 작성되어 있습니다.   

 

Python의 기초 100제를 확인하기 위해서는 다음 사이트로 이동하면 됩니다. 

https://codeup.kr/problemsetsol.php?psid=33 

 

문제집 / Python 기초 100제

 

codeup.kr

 

6026 : [기초-값변환] 실수 2개 입력받아 합 계산하기(설명)(py)

실수 2개를 줄바꿈으로 입력받아
합을 출력하는 프로그램을 작성해보자.

 

▷ 참고

입력되는 값은 기본적으로 문자열로 인식된다.

숫자로 구성된 문자열이나 정수를 실수(real number) 값으로 바꾸기 위해서는 float( ) 를 사용할 수 있다.
소숫점(.)은 그 위치가 정해져있지 않고 이리저리 둥둥 떠다니므로, floating point라고 부른다.

 

▷ 해설

이전의 문제들과 같이 split()로 input()을 받게 되면 줄바꿈 문자('\n')를 나눌 수 없기 때문에 틀리게 된다.

그래서 두 개의 input()으로 나눠 값을 입력받으면 두 값의 합을 구하면 된다.

 

a = float(input())
b = float(input())
print(a+b)

 

6027 : [기초-출력변환] 10진 정수 입력받아 16진수로 출력하기1(설명)(py)

10진수를 입력받아 소문자 16진수(hexadecimal)로 출력해보자.

 

▷ 참고

10진수 형태로 입력받고
%x로 출력하면 16진수(hexadecimal) 소문자로 출력된다.
(%o로 출력하면 8진수(octal) 문자열로 출력된다.)

10진법은 한 자리에 10개(0 1 2 3 4 5 6 7 8 9)의 문자를 사용하고,
16진법은 영문 소문자를 사용하는 경우에 한 자리에 16개(0 1 2 3 4 5 6 7 8 9 a b c d e f)의 문자를 사용한다.
16진수 a는 10진수의 10, b는 11, c는 12 ... 와 같다.

 

▷ 해설

파이썬은 데이터를 형식에 맞추어 출력하는 포매팅(Formatting)이 가능합니다.

출력형식은 다음과 같습니다.

  • %s - 문자열(String)
  • %c - 문자 1개(character)
  • %d - 정수(Integer)
  • %f - 부동소수(floating-point)
  • %o - 8진수
  • %x - 16진수
  • %% - %(퍼센트문자)

'나는 %c요일이 좋다'%'금'

다음 코드를 실행하면 '나는 금요일이 좋다'가 된다.

문장이 끝난 뒤 % 뒤의 값을 넣는 것이 가능하다. 여러개의 값이 오면 순서대로 대입이 진행된다.

 

파이썬(Python 3)에만 적용되는 포매팅 함수인 format()가 있다.

'나는 %d%c요일이 싫다'.format(13, '금')

코드를 실행하면 '나는 13일의 금요일이 싫다'다 된다.

n = int(input())
print('%x'%n)

 

6028 : [기초-출력변환] 10진 정수 입력받아 16진수로 출력하기2(설명)(py)

10진수를 입력받아 대문자 16진수(hexadecimal)로 출력해보자.

 

▷ 참고

10진수 형태로 입력받고
%X로 출력하면 16진수(hexadecimal)대문자로 출력된다.

16진법은 영문 소문자를 사용하는 경우에 한 자리에 16개(0 1 2 3 4 5 6 7 8 9 A B C D E F)의 문자를 사용한다.
16진수 A는 10진수의 10, B는 11, C는 12 ... 와 같다.

 

▷ 해설

6027 문제와 같이 출력형식을 %X로 하면 쉽게 문제를 해결 가능하다.

n = int(input())
print('%X'%n)

 

6029 : [기초-값변환] 16진 정수 입력받아 8진수로 출력하기(설명)(py)

16진수를 입력받아 8진수(octal)로 출력해보자.

 

▷ 참고

8진법은 한 자리에 8개(0 1 2 3 4 5 6 7)의 문자를 사용한다.
8진수 10은 10진수의 8, 11은 9, 12는 10 ... 와 같다.

 

▷ 해설

입력된 10진수를 16진수로 변경하기 위해서 형변환을 할때 16진수로 변경해 준다.

n = int(input(), 16)
print('%o' % n)

 

6030 : [기초-값변환] 영문자 1개 입력받아 10진수로 변환하기(설명)(py)

영문자 1개를 입력받아 10진수 유니코드(Unicode) 값으로 출력해보자.

 

▷ 참고

n = ord(input())  #입력받은 문자를 10진수 유니코드 값으로 변환한 후, n에 저장한다.

ord( ) 는 어떤 문자의 순서 위치(ordinal position) 값을 의미한다.  
실제로 각각의 문자들에는 연속된 정수 값이 순서에 따라 부여 되어 있다. A:65, B:66, C:67 .... 
ord(c) : 문자 c 를 10진수로 변환한 값 

컴퓨터로 저장되고 처리되는 모든 데이터들은 2진수 형태로 정수화 되어야 하는데,
컴퓨터에 문자를 저장하는 방법으로 아스키코드(ASCII Code)나 유니코드(Unicode)가 자주 사용된다.

예를 들어, 영문 대문자 'A'는 10진수 값 65 로 표현하고, 
2진수(binary digit) 값 1000001 로 바꾸어 컴퓨터 내부에 저장한다. 

유니코드(unicode)는 세계 여러 나라의 문자를 공통된 코드 값으로 저장할 때 사용하는 표준 코드이다.

 

▷ 해설

ord(문자)는 문자의 유니코드 값을 반환하는 함수이다.

n = ord(input())
print(n)

알고리즘 공부를 위해 코드업 사이트(https://codeup.kr/)의 기초 100제를 시작합니다.

블로그에 올라온 모든 코드는 파이썬(Python)으로 작성되어 있습니다.   

 

Python의 기초 100제를 확인하기 위해서는 다음 사이트로 이동하면 됩니다. 

https://codeup.kr/problemsetsol.php?psid=33 

 

문제집 / Python 기초 100제

 

codeup.kr

 

6021 : [기초-입출력] 단어 1개 입력받아 나누어 출력하기(설명)(py)

알파벳과 숫자로 이루어진 5개의 문자가 입력된다.
입력받은 단어의 각 문자를 한 줄에 한 문자씩 분리해 출력한다.

 

▷ 참고

s[0] 은 첫 번째 문자를 의미한다.

 

▷ 해설

어떤 값이 올지 몰라 이 경우에는 split로 구분이 불가능해진다.

이 문제를 해결하기 위해서는 문자열 인덱싱이 필요하다

Hello라는 문자가 입력된경우 문자열은 자동적으로 0번 부터 4번까지의 번호가 인덱싱이 된다.

문자 H e l l o
인덱스 0 1 2 3 4

그래서 우리는 변수명 뒤에 대괄호([ ])를 붙혀 인덱스를 선택하게 된다. 

변수명[인덱스] 

다음 형식이 인덱싱의 기본 형태이다.

s = input()

print(s[0])
print(s[1])
print(s[2])
print(s[3])
print(s[4])

 

6022 : [기초-입출력] 연월일 입력받아 나누어 출력하기(설명)(py)

6자리의 연월일(YYMMDD)을 입력받아 년도(YY) 월(MM) 일(DD)을 공백으로 구분해 한 줄로 출력해보자.

 

▷ 참고

s = input()
print(s[0:2])
를 실행하면 0번째 문자부터 1번째 문자까지 잘라 출력한다.
s[a:b] 라고 하면, s라는 단어에서 a번째 문자부터 b-1번째 문자까지 잘라낸 부분을 의미한다.
다른 자르기 방법도 있다.

 

▷ 해설

이제 문자열 슬라이싱을 이용하면 값을 문자 하나가 아닌 문자열로 나눌 수 있다.

슬라이싱은 인덱스와 비슷하게 대괄호([ ])안에 나타낸다.

단 인덱싱 처럼 숫자만 입력하는 것이 아닌 범위를 표현하기 위해서 쌍점(:)을 이용한다.

쌍점의 앞의 값부터 뒤의 값 - 1 까지의 문자를 묶어서 값이 나온다.

 

21년 6월 14일(210614)을 입력하면 인덱스는 다음과 같다. 

연월일(YYMMDD) 2 1 0 6 1 4
인덱스 0 1 2 3 4 5

 

s = input()

print(s[0:2], s[2:4], s[4:6])
s = input()

print(s[0:2] + ' ' + s[2:4] + ' ' + s[4:6])

 

6023 : [기초-입출력] 시분초 입력받아 분만 출력하기(py)

시:분:초 형식으로 시간이 입력될 때 분만 출력해보자.

어떻게 분만 출력해야 할지 주의 깊게 생각해야한다.

 

▷ 해설

split()를 이용해 :를 기준으로 끊는 방법으로만 문제를 풀 수 있다.

슬라이싱의 경우 23:11:50의 슬라이싱은 s[3:5]지만, 9:11:50의 경우엔 s[2:4]로 슬라이싱을 해야되며 슬라이싱 범위가 달라지게된다. 

문자열 2 3 : 1 1 : 5 0
인덱스 0 1 2 3 4 5 6 7

 

문자열 9 : 1 1 : 5 0
인덱스 0 1 2 3 4 5 6

 

h, m, s = input().split(':')

print(m)

 

6024 : [기초-입출력] 단어 2개 입력받아 이어 붙이기(설명)(py)

알파벳 문자와 숫자로 이루어진 단어 2개를 입력받아
순서대로 붙여 출력하는 프로그램을 작성해보자.

 

▷ 참고

단어는 문자(character)들로 만든다.
문자들로 구성된 문장을 문자열(string)이라고 부른다.
문자열에는 공백문자(' ')가 포함될 수 있는데, 
문자 1개는 길이가 1인 문자열이라고 할 수 있고, 공백문자(' ')가 없는 문자열은 단어(word)라고 할 수 있다.

일반적인 문장들은 공백으로 구분된 단어들로 만들어지기 때문에,
공백문자로 구분된 문장에서 단어를 잘라내기 위해서는 공백문자(' ')를 기준으로 자르면 된다.
키보드로 입력되는 것들은 기본적으로 문자열로 인식되고, 문자열끼리 더하기(+)를 실행하면,
두 문자열을 합쳐 연결한(concatenate) 결과를 만들어 낸다.

 

▷ 해설

한 문자열을 split로 공백을 기준으로 나눠받아 공백을 없애기 위해 sep이나 +를 이용해 출력하면 된다

s1, s2 = input().split()

print(s1, s2, sep='')
s1, s2 = input().split()

print(s1 + s2)

 

6020 : [기초-입출력] 주민번호 입력받아 형태 바꿔 출력하기(py)

정수 2개를 입력받아
합을 출력하는 프로그램을 작성해보자.

 

▷ 참고

입력되는 값은 기본적으로 문자열로 인식된다.

문자열 + 문자열은 두 문자열을 합친 문자열을 만든다.
숫자로 구성된 문자열이나 실수를 정수(integer) 값으로 바꾸기 위해서는 int( ) 를 사용할 수 있다.
수 + 수의 결과는 합(addition)이 계산된다.

 

▷ 해설

자료형을 고려하지 않고 공백으로 나눈 뒤 합을 구하게 되면 문자열을 연결한 값이 나와 문제를 틀릴 것이다.

우리는 이러한 문제를 해결하기 위해 입력하는 값이 정수인 경우 형변환을 통해 자료형을 int()로 변경해준다.

그렇게 해야지만 구하고자 했던 답인 두 수의 합이 나오게 된다.

a, b = input().split()
c = int(a) + int(b)
print(c)

 

+ Recent posts