-Summary-
CodeUp 1001 ~ 1075번 문제 파이썬 풀이 Write Up
02-01 (Codeup 1001 ~ 1040)
입력 없이 'Hello'를 출력 시키는 것이 목적이다.
print("Hello")
print 함수에 인자를 "Hello"를 주어 'Hello'가 출력되게 코드를 작성했다.
'Hello World'를 출력하는 것이 목적이다.
print("Hello World")
1001 풀이 코드에 Hello 띄고 World를 적어주면 된다.
Hello
World
이렇게 두줄에 거쳐서 출력하는 것이 목적이다.
print("Hello\nWorld")
개행문자 \n을 Hello와 World 사이에 넣어줘서 줄바꿈을 구현해줬다.
위의 출력처럼 작은 따음표가 들어간 상태로 'Hello'를 출력하는 것이 목적이다.
print("'Hello'")
파이썬에서는 '를 출력하고 싶다면 큰 따음표로 출력문을 감싸주면 되고, "를 출력하고 싶다면 작은 따음표로 감싸주면 된다.
위처럼 큰 따음표가 들어간 "Hello World"를 출력하는 것이 목적이다.
print('"Hello World"')
위에서 설명했듯이 "를 출력하고 싶다면 작음 따음표로 감싸주면 된다.
"!@#$%^&*()"를 큰 따음표 포함으로 출력하는 것이 목적이다.
print('"!@#$%^&*()"')
큰 따음표가 들어가기에 작음 따음표로 출력할 특수문자들을 감싸줘서 print하면 된다.
위의 출력처럼 파일 경로 "C:\Download\hello.cpp" 출력이 목적이다. 단 큰 따음표 포함으로 출력해야한다.
print('"C:\\Download\\hello.cpp"')
큰 따음표가 들어가기에 작음 따음표로 출력할 경로를 감싸줘야하고 '\'의 경우 한번 쓰면 파이썬에서 제대로 출력을 못해주지만 '\\' 이렇게 두번 써준다면 '\'를 출력해준다. 따라서 \부분만 \\로 고쳐서 print하면 된다.
┌┬┐
├┼┤
└┴┘
위를 유니코드를 이용해 출력하는 것이 목적이다. 위 문자들은 'ㅂ'+한자 버튼을 누르면 찾을 수 있다.
코드업에 각 문자에 해당하는 유니코드표가 주어졌기에 위 표를 보고 해당 문자의 유니코드를 구했다.
print("\u250C\u252C\u2510\n\u251C\u253C\u2524\n\u2514\u2534\u2518")
유니코드 출력은 \u로 가능해서 해당 문자 유니코드를 찾아서 print, \u, \n으로 출력했다.
사이트에 1009번 문제가 안보여서 1010으로 넘어왔다.
정수 입력을 받고 정수를 그대로 출력하는 것이 목적이다.
print(int(input()))
문제의 포인트는 정수를 입력받고 정수로 출력해야하므로, 입력 함수인 input을 int()로 감싸줘서 정수형으로 자료형 변환을 해줬다.
1010문제와 비슷하게 입력을 받고, 입력값을 그대로 출력하는 것이지만, 이번에는 문자형으로 출력해주는게 목적이다.
print(input())
input 함수는 입력된 값을 문자형으로 받아오므로, 따로 형변환 없이 그대로를 출력해줬다.
이번에는 실수형 입력 후 실수형 출력이다.
print("%.6f" % float(input()))
처음에는 print(float(input()))로 코드를 작성했는데, 틀렸다는 결과가 나와서 놀랐었다.
오류 정보를 확인해보면 정답은 소수점 6자리까지 출력하는데 값이 6자리가 안채워질 경우에는 0으로 채워줬다. 그래서 코딩도장에서 배웠던 %f를 응용하여 %.6f로 해당 값을 소수점 6자리로 출력되도록 만들었다.
2개의 정수가 공백으로 구분되어 입력되는데, 이 두 정수를 공백으로 구분하여 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a,b)
split을 사용해서 공백을 기준으로 입력 된 두 수를 공백 기준으로 나눠줬고, map을 이용해 나눠진 두 수를 int형으로 바꿔줬다. 바꿔준 두 값을 정수형 변수 a,b에 담아 print로 출력해줬다.
2개의 문자가 공백으로 구분되어 입력되는데, 이 두 문자를 순서를 바꿔서 출력하는 것이 목적이다.
a, b = input().split()
print(b,a)
위와 마찬가지로 split함수로 공백 기준으로 문자를 잘라서 a,b 변수에 넣어줬고, 출력은 순서를 바꿔서 해야하므로 변수 b, a순으로 출력해줬다.
실수가 입력되는데, 이 실수의 소수점 셋째 자리에서 반올림해 둘째 자리까지 출력하는 것이 목적이다.
print("%.2f" % float(input()))
1012의 %.6f를 응용하면된다. 이번에는 소수점 둘째 자리까지 출력이 목적이므로 %.2f로 써주면 된다.
입력받은 정수를 공백으로 구분해 3번 출력하는 것이 목적이다.
print("{0} {0} {0}".format(int(input())))
format을 이용해서 문제를 풀었다. 0번째 인덱스를 3번 출력하게 적어두고, format 함수로 int(input())을 적어주면 입력 받은 값을 int형으로 변환한 후 3번 출력하게 된다.
시간이 시:분 형식으로 입력되는데, 이를 그대로 시:분 형식으로 출력하는 것이 목적이다.
ho, mi = input().split(":")
print(ho,':',mi,sep="")
입력 예시와 출력 예시를 봤을 때, 그대로 출력해도 상관없을 것 같지만 혹시 모르니 :를 기준으로 split 시켜 두 변수에 담고, print를 하는데 이때 공백없이 시:분 형식으로 출력되야하므로 sep="" 옵션을 줘서 문제를 풀었다.
연.월.일 형식으로 입력되는데 이를 연.월.일 형식으로 출력하는 것이 목적이지만, 단 월, 일이 한 자리 수인 경우 앞에 0을 붙여서 출력해야한다.
y,m,d = map(int,input().split("."))
print("%d.%02d.%02d" %(y,m,d))
처음에는 월, 일만 한자리 수일 경우 0을 붙이는 줄 알고 위처럼 작성했지만 틀렸다고 한다.
위처럼 연도가 2자리로 입력될 경우도 0으로 채워줘야하는 조건이 존재함을 알고 아래 코드로 고쳤다.
y,m,d = map(int,input().split("."))
print("%04d.%02d.%02d" %(y,m,d))
이번에도 역시 %를 이용해서 출력했다. %d는 정수를 출력해주는 역할을 하는데, 이때 앞에 숫자를 붙여준다면 출력 값이 그 숫자보다 작다면 나머지 공간을 공백으로 채워준다. 이걸 이용해서 숫자 앞에 0을 붙여준다면(%04d 같이) 남은 공간을 공백이 아닌 0으로 채워주는 것을 볼 수 있다. 이를 이용해서 문제를 풀었다.
13자리로 이루어진 주민번호가 '-'로 구분되어 앞 6자리, 뒤 7자리가 입력되는데, 입력된 주민번호를 '-'를 뺀 상태로 출력하는 것이 목적이다.
persNum = input()
print(persNum.replace('-',''))
split으로 나눠서 출력하는 방법도 있겠지만, 이번 문제는 replace를 사용해서 풀었다. replace가 특정 문자를 원하는 문자로 교체시켜서 출력해주는 기능을하는데, 이를 이용해 '-'를 ''로 replace를 사용해 바꿔서 출력하니 -없이 주민번호를 출력해주는 것을 볼 수 있다.
단어가 입력되면 그 단어를 그대로 출력하는 것이 목적이다.
print(input())
c언어라면 char 변수를 사용해야되기 때문에 조금 복잡한 면이 있을 수 있으나, 파이썬은 그저 간단히 print(input())을 해준다면 입력된 단어 그대로가 출력된다.
입력 된 문장을 그대로 출력하는 것이 목적이다.
print(input())
c언어로 풀이를 한다면 복잡할 수도 있겠지만 파이썬으로 풀이하기에, 위 코드와 똑같이 그저 입력된 문자열을 그대로 출력해줘서 풀었다.
실수 1개가 입력되는데, 이 실수의 정수 부분을 첫 번째 줄에, 소수 부분을 두 번째 줄에 출력하는 것이 목적이다.
a,b = input().split('.')
print("{0}\n{1}".format(int(a),int(b)))
처음에는 float를 받아와 복잡한 연산과정을 거쳐서 정수와 소수 부분을 출력하려했지만, 쉽게 생각해보면 실수가 입력되지만 input은 문자열로 받아들이므로 '.'을 기준으로 split해주면 훨씬 간단했다. 입력된 값을 '.'을 기준으로 split한 후 format를 이용해 각줄에 정수, 소수 부분을 정수형으로 출력했다.
단어가 입력되는데 이 단어를 한 글자씩 ' '로 묶어서 출력하는 것이 목적이다.
for i in input():
print("'%s'" % i)
문자열도 결국 시퀀스 자료형이므로 for문으로 입력된 단어를 한 글자씩 i로 가져와 ' '로 감싸서 출력되게 했다.
다섯자리의 숫자가 입력되면 그 숫자를 각 자리의 숫자로 분리해 [ ]로 감싸서 출력하는 것이 목적이다.
a = input()
for i in range(len(a)):
print('[',a[i],'0'*(4-i),']',sep="")
입력 값을 정수형으로 반환하지 않고 문자열 그대로 사용했다. for문으로 a의 요소만큼 돌리는데, 이때 i를 붙여야할 0의 개수 구하는데 사용할 것이므로 range(len(a))의 값들이 들어가도록 했다. print는 a의 인덱스 i의 값을 출력되게 하는데 이때 0의 개수는 5자리로 값이 입력되므로 4-i 만큼 '0'에 곱해서 들어가게 했다. 또한 []로 감싸주는 것을 잊지 말아야한다. 이 print식은 공백이 존재하면 안되므로 sep="" 옵션을 주었다.
시:분:초 형식으로 입력되는데 여기서 분만 출력하는 것이 목적이다.
time = input().split(':')
print(time[1])
처음에는 이렇게 ':'로 split하고 분의 요소가 존재하는 time[1]을 출력하게 만들었다.
그렇게 할 경우 위와 같이 분이 00인 상황에서 0이 출력되야하는데, 작성한 코드로는 00이 출력된다는 문제가 있음을 깨달았다.
time = input().split(':')
print(time[1] if time[1] != '00' else '0')
그래서 1줄 if문으로 time[1]이 '00'이 아닐 경우 그대로 출력하고, 만약 '00'일 경우 '0'만 출력하도록 코드를 작성했다.
연.월.일 형식으로 입력되는데 이를 일-월-년 형식으로 출력되게 하는 것이 목적이다.
y, m, d = input().split('.')
print("%s-%s-%s" %(d, m, y))
입력 값을 .을 기준으로 split한 후 split 한 값들을 print 함수에서 %s-%s-%s로 각각 일, 월, 년으로 출력하게 했다.
입력 정수를 그대로 출력하게 하는 것이 목적이다.
print(int(input()))
input()을 int()로 감싸줘서 입력 값을 정수형으로 출력되게 작성했다.
입력 된 실수를 소수점 11자리로 출력하는 것이 목적이다.
print("%.11f" % float(input()))
%.11f로 이용해 입력 된 실수를 소수점 11자리까지 출력되도록 작성했다.
입력 된 정수를 그대로 출력하는 것이 목적이다.
print(int(input()))
이 문제를 c언어로 풀었다면 int 형 변수로는 값이 너무 커 오버플로우가 일어나, 더 범위가 큰 자료형을 사용해야겠지만 내가 알기로 파이썬은 오버플로우가 일어나지 않기 때문에 입력 된 그대로 정수형으로 출력되도록 작성했다.
입력된 10진수를 8진수로 출력하는 것이 목적이다.
print('%o' % int(input()))
%o는 8진수를 출력시켜준다. 입력된 10진수를 %o로 8진수로 출력하게끔 작성했다.
입력 된 10주스를 16진수로 바꿔서 출력하는 것이 목적이다.
print('%x' % int(input()))
%x는 16진수를 출력시켜준다. 입력된 10진수를 %x로 16진수로 출력하게끔 작성했다.
입력된 10진수를 대문자 16진수로 출력하는 것이 목적이다.
이 문제 같은 경우 16 진수의 알파벳을 대문자로 출력해야하므로 upper 함수를 이용하면 되겠다고 생각했다. upper 함수는 str 형 자료형에만 사용 가능하므로 위처럼 %x로 16진수로 바꿔주기 보다는 비슷한 기능을 하는 hex를 사용했다.
hex가 16진수로 바꿔주는 것은 혹시 반환 값이 str형인지 확인하기 위해서 위 사진처럼 type을 사용해서 반환 값이 str 형이라는 것을 알아냈다.
print(hex(int(input()))[2:].upper())
그대로 프린트하게 되면 %x와 달리 0x<값> 형식으로 출력이 되고, 또한 알파벳이 대문자로 출력이 안되므로, 문자열 슬라이스를 이용해 0x를 잘라준 다음 upper로 대문자로 바꿔준 뒤 출력하도록 작성했다.
8진수로 입력된 값을 10진수로 바꿔서 출력하는 것이 목적이다.
print(int(input(),8))
예전에 리버싱 문제를 파이썬으로 풀어보면서 알아낸 사실인데, 정수형으로 바꿔주는 int에 인수를 하나 더 넣어준다면-예를들어 int(<바꿀값>,<해당진수>)-바꿀 값을 해당 진수로 받아들여 10진수로 바꿔준다.
이를 이용해 8진수로 입력된 값을 int의 인수로 8을 하나 더 줌으로써 10진수로 바꿔져서 출력하도록 작성했다.
16진수로 입력 된 값을 8진수로 바꿔서 출력하는게 목적이다.
print("%o" % int(input(),16))
int에 2개의 인수를 줘서 입력 값을 16진수에서 10진수로 변하게 하고 %o를 통해 10진수로 변환된 값을 다시 8진수로 바꿔서 출력하도록 작성했다.
영문자가 입력되면 그 아스키코드 값을 10진수로 출력하는 것이 목적이다.
print(ord(input()))
문자의 아스키 값을 반환해주는 ord를 사용해서 아스키 값을 출력하도록 작성했다.
입력 된 아스키코드 값을 문자로 출력하는 것이 목적이다.
print(chr(int(input())))
1036번 문제와는 반대로 chr를 사용해서 풀었는데, 이 때 chr은 int형 값에 해당하는 아스키 문자를 반환해주므로, 입력 받은 값을 먼저 int형으로 형 변환을 시켜줬다.
두 정수가 공백으로 구분되어 입력 되는데, 이 두 수의 합을 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a+b)
입력받은 값들을 split으로 자르고 map으로 정수형으로 형을 변환해서 변수 a,b에 담았다. 그리고 print에서 +연산자를 사용해서 두 수의 합을 출력하도록 작성했다.
1038번 문제와 마찬가지로 두 정수가 공백으로 구분해서 입력 되는데, 이 두 값의 합을 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a+b)
c언어 같은 경우는 자료형의 범위 제한이 있기 때문에 int 대신 long으로 풀어야할지도 모르겠지만, 파이썬은 오버플로우가 일어나지 않기 때문에 1038번 코드와 똑같이 적었다.
입력된 정수의 부호를 바꿔 출력하는 것이 목적이다.
print(int(input())*-1)
input()을 int()로 감싸 정수형으로 변환한 상태에서 -1을 곱해서 부호를 바꿔 출력하도록 작성했다. 입력 값이 -1일 경우 -1을 곱해서 1이 출력되고, 입력 값이 1일 경우 -1을 곱해서 -1이 출력된다.
02-02 (Codeup 1041 ~ 1075)
입력된 영문자의 다음 알파벳을 출력하는게 목적인 것 같다.
print(chr(ord(input())+1))
아스키 코드에서 a,b,c 같이 앞의 알파벳, 뒤의 알파벳은 +-1씩 차이난다는 점을 이용해서 풀었다. 입력 받은 문자를 ord로 아스키 코드 값을 가져오고, 그 값에 1을 더한 후 chr로 1 더해진 아스키 코드에 해당하는 문자를 출력하도록 작성했다.
입력 된 두 값중 첫째 값을 둘째 값으로 나눈 몫을 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a//b)
map, split, input을 사용해 두 값을 정수형으로 분리해 a,b 두 변수에 각각 값을 넣고 a//b로 몫을 출력하도록 작성했다.
/이 아닌 //을 사용한 이유는 /은 실수로 몫을 출력해서 1042번 문제에 사용하기에 부적절하지만 //은 정수로 출력해서 1042번 문제에 적절하기 때문이다.
입력 된 두 값중 첫째 값을 둘째 값으로 나눈 나머지를 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a%b)
나머지를 반환해주는 %을 사용해서 풀었다. 나머지 코드는 위의 설명과 동일하다.
입력된 값에 1을 더해서 출력하는 것이 목적이다.
print(int(input())+1)
c언어였다면 오버플로우 때문에 자료형을 신중하게 선택해야 했겠지만, 파이썬이므로 입력 된 값을 정수형으로 바꾼 후 1을 더해 출력하도록 작성했다.
두 값이 공백을 기준으로 입력되는데, 첫 줄에는 두 값의 합, 둘째 줄에는 차, 셋째 줄에는 곱, 넷째 줄에는 몫, 다섯째 줄에는 나머지, 여섯 째 줄에는 나눈 값(몫을 실수까지 출력하는 것 같다.)을 순서대로 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a+b)
print(a-b)
print(a*b)
print(a//b)
print(a%b)
print("%.2f" % (a/b))
1행에서 두 값을 공백 기준으로 자르고 정수형으로 변환해서 a,b 두 변수에 값을 각각 넣어준 후, +,-,*,//,%를 이용해서 다섯째 줄까지 출력하는데, 이때 여섯째 줄은 소수점 둘째 자리까지 출력해야하므로 %.2f로 둘째 자리까지만 출력되도록 작성했다. 또한 실수형으로 나눈 결과가 나와야하므로 //대신 /를 사용했다.
입력 된 세 값의 합과 평균을 줄을 바꿔 출력하는 것이 목적이다.
a, b, c = map(int,input().split())
print(a+b+c)
print("%.1f" % ((a+b+c)/3))
1행에서 세 값을 자르고 정수형으로 바꿔서 a,b,c에 각각 집어넣어 주고, a+b+c로 더한 값을 출력, %.1f를 사용해 소수점 첫째 자리까지 평균을 출력하도록 작성했다.
입력 된 정수의 2배를 출력하는 것이 목적이다.
print(int(input())*2)
입력 된 값을 정수형으로 바꾼 후 2를 곱해서 출력하도록 작성했다.
입력 된 두 값중 첫째 값과 두번째 값 만큼 2를 제곱한 값을 곱해서 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a * (2**b))
두 값을 공백을 기준으로 나눈 후, 제곱을 나타내는 연산자인 **으로 2**b만큼 제곱한 값을 a와 곱해서 출력하도록 작성했다.
입력 된 두 값에서 첫째 값이 둘째 값보다 크면 1을, 작거나 같다면 0을 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(1 if a > b else 0)
두 값을 a,b에 int형으로 잘라서 넣은 후, 1줄 if문으로 a > b가 True라면 1을 아니라면 0을 출력하도록 작성했다.
입력 된 두 값이 같을 경우 1을, 아닐 경우 0을 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(1 if a == b else 0)
두 값을 a,b에 int형으로 잘라서 넣은 후, 1줄 if문으로 a == b가 True라면 1을 아니라면 0을 출력하도록 작성했다.
입력 된 두 수에서 두번째 값이 첫번째 값보다 크거나 같으면 1을, 작으면 0을 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(1 if a <= b else 0)
두 값을 a,b에 int형으로 잘라서 넣은 후, 1줄 if문으로 a <= b가 True라면 1을 아니라면 0을 출력하도록 작성했다.
입력 된 두 값이 다를 경우 1을, 같다면 0을 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(1 if not a == b else 0)
두 값을 a,b에 int형으로 잘라서 넣은 후, 1줄 if문으로 작성하는 a == b 조건 앞에 not을 붙어서 a == b가 아니면 1을 맞다면 0을 출력하도록 작성했다.
입력된 값이 0이면 1을, 1이면 0을 출력하는 것이 목적이다.
print(int(not int(input())))
정수 값이 1이면 True, 0이면 False를 나타낸다는 점을 이용해, 입력 값을 정수형으로 변환해준 다음 not을 붙여서 0이면 True, 1이면 False를 반환하게 하고, 반환된 값을 int형으로 바꿔줌으로써 반환 값이 True라면 1을, False라면 0을 출력하도록 작성했다.
입력 된 두 값이 1인 경우에는 1을 출력, 아닐 경우 0을 출력한다.
a, b = map(int, input().split())
print(a and b)
입력된 값을 공백 기준으로 잘라 a,b에 넣어주고, 두 값이 1(True)일 경우 1, 하나라도 0(False)일 경우 0을 반환해주는 and 논리 연산자로 a and b해서 둘다 1인 경우 1을, 아닌 경우 0을 출력하도록 작성했다.
두 값이 하나라도 1(참)이라면 1을 아닐 경우 0을 출력하는 것이 목적이다.
a, b = map(int, input().split())
print(a or b)
입력된 값을 공백 기준으로 잘라 a,b에 넣어주고, 두 값중 하나라도 1(True)일 경우 1, 둘다 0(False)일 경우 0을 반환해주는 or 논리 연산자로 a or b해서 둘다 0인 경우 0을, 아닌 경우 1을 출력하도록 작성했다.
입력된 두 값의 참(1), 거짓(0)이 다를 경우 1, 같을 경우에는 0을 출력하는 것이 목적이다.
a, b = map(int, input().split())
print(1 if a != b else 0)
(값을 split으로 잘라서 두 변수에 넣는다는 설명은 이제부터 생략하겠다.)
1줄 if문을 사용해서 두 값이 다르면 1, 같으면 0이 출력되도록 작성했다.
입력된 두 값의 참(1), 거짓(0)이 같으면 1, 다르면 0을 출력하는 것이 목적이다.
a, b = map(int, input().split())
print(1 if a == b else 0)
1줄 if문을 사용해서 두 값이 같으면 1, 다르면 0이 출력되도록 작성했다.
입력 된 두 값 모두 거짓일 경우 1, 아니라면 0을 출력하는 것이 목적이다.
a, b = map(int, input().split())
print(1 if a == b == 0 else 0)
1줄 if문의 조건식으로 a == b == 0을 사용해서 a, b가 0(False)라면 1을, 아니라면 0을 출력하도록 작성했다.
입력 된 값을 비트 단위로 1 -> 0, 0 -> 1, 즉 not 연산을 해서 만들어진 값을 10진수로 출력하는 것이 목적이다.
print(int(bin(~int(input())),2))
비트 단위로 not 연산은 배운 기억이 없어 구글링을 해서 코딩도장 Unit 47.1 부록을 참고하여 풀었다.
- & : 비트 단위 and 연산
- | : 비트 단위 or 연산
- ^ : 비트 단위 xor 연산
- ~ : 비트 단위 not 연산
위에 정리해놓은 비트 단위 논리 연산자를 사용해서 풀었다. 위 문제는 비트 단위 not 연산이 필요하므로 먼저 input을 정수형으로 변환한 다음 2진수로 바꿔주는 bin으로 2진수로 바꿔주는데, 이때 비트 단위 not을 의미하는 ~를 붙여서 not 연산이 된 상태로 2진수로 변환했다. 그 다음 not 연산이 된 2진수를 다시 int(<값>,2)로 10진수로 변환한 후 출력하도록 작성했다.
입력 된 두 값을 비트 단위로 and 연산해서 만들어진 값을 10진수로 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a&b)
#print(int(bin(a&b),2))
비트 단위 and 연산은 기호 &으로 수행할 수 있다. 원래는 주석처리 한것처럼 and 연산한 값을 2진수로 바꾸고, 10진수로 바꾸는 과정으로 접근했지만 생각해보니 어쩌피 2진수로 바꾸기 전에 a&b를 해줘도 값이 잘 나오는데, 굳이 2진수로 바꿨다가 10진수로 바꿀 필요는 없을 것 같았다. 그래서 그냥 print(a&b)만 써주니 올바른 결과가 출력됐다. 위 1059 문제 같은 경우도 그냥 print(~int(input()))만 써주면 좀 더 간결하게 작성이 가능할 것 같다.
입력 된 두 값을 비트 단위로 or 연산해서 만들어진 값을 10진수로 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a|b)
1060번 코드에 비트단위 and 연산을 해주는 기호 &을 or 연산을 해주는 기호 |로 바꿔서 작성했다.
입력 된 두 값을 비트 단위로 xor 연산해서 만들어진 값을 10진수로 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a^b)
1060,1061번 코드에서 비트단위 and, or 연산을 해주는 기호 &, |를 xor 연산을 해주는 기호 ^로 바꿔서 작성했다.
참고로 xor 연산은 0 0 : 0, 0 1 : 1, 1 0 : 1, 1 1 : 0으로 수행되는데 그냥 두 값이 모두 0이거나 1일 때는 0을 아닐 경우 1로 연산한다는 것만 알고 있으면 될 것 같다.
입력 된 두 값중, 더 큰 값을 출력하는 것이 목적이다.
a, b = map(int,input().split())
print(a if a > b else b)
1줄 if문을 사용해서 작성했다. 같을 경우에 대한 조건이 없어서 if a > b일 경우 a를 출력, 아닐 경우 b를 출력하도록 했다.
입력 된 세 값중 가장 작은 값을 출력하는 것이 목적이다.
a = list(map(int,input().split()))
min = a[0]
for i in a:
if min > i: min = i
print(min)
이번 문제는 다른 문제들과 달리 세 값을 세 변수에 나눠서 저장하지 않고, list a에 모두 저장했다. min은 가장 작은 값을 나타내는 역할을 하는 변수로 맨 처음에는 a[0] 값을 담고, for문을 돌려서 min보다 a의 요소가 차례로 들어간 i가 더 작다면 min의 값이 i의 값이 되도록 했다. 그리고 반복문을 마친 후 min을 출력하면 가장 작은 값이 나온다.
입력 된 세 값중 짝수만 순서대로 줄을 바꿔 출력하는 것이 목적이다.
a = list(map(int,input().split()))
for i in a:
if i % 2 == 0:
print(i)
1064번 문제와 똑같이 입력 값들을 list형 변수 a에 담고 a의 요소들로 for문을 돌린다. 짝수는 2로 나눴을 때 0이 된다는 점을 이용해 조건문을 i % 2 == 0으로 작성하고 만약 이 조건에 만족할 시 해당 값을 출력되도록 했다.
입력 된 세 값 순서대로 각각 짝수면 'even'을, 홀수면 'odd'를 출력하게 하는 것이 목적이다.
a = list(map(int,input().split()))
for i in a:
if i % 2 == 0:
print('even')
continue
print('odd')
1065번 코드와 비슷하지만 i % 2가 0일 경우 'even'을 출력하고 continue를 써서 다시 반복문 시작지점으로 돌아가게 했다. 그 이유는 i % 2 == 0이 아닐 경우에는 홀수이므로 'odd'를 출력해야하지만 else 없이 그냥 써줬기에 해당 값이 짝수일 경우 조건문이 끝난 후 odd를 출력해주는 것을 방지해주기 위함이다.
입력 된 1개의 정수가 플마 여부를 확인하고 첫 줄에 'minus', 'plus'를 조건에 맞게 출력, 두번째 줄에는 짝홀 여부를 확인하고 조건에 맞게 'even', 'odd'를 출력하는 것이 목적이다.
a = int(input())
print('plus' if a >= 0 else 'minus')
print('odd' if a % 2 != 0 else 'even')
1줄 if문을 사용해서 0보다 작거나 같을 경우 'plus' 아닐 경우 'minus'를 첫째 줄에 출력하고 둘째 줄은 2로 나눴을 때 0이 아닐경우 'odd'를 아닐 경우 'even'을 출력하도록 작성했다.
0~100 사이의 정수가 입력되면 그 정수의 평가 결과를 출력하는 것이 목적이다.
위 사진이 평가 기준이다.
a = int(input())
if a >= 90:
print('A')
elif a >= 70:
print('B')
elif a >= 40:
print('C')
else:
print('D')
if와 elif 그리고 else를 이용해서 평가했다. 입력 값은 0~100 사이이므로 90보다 크다면 무조건 'A'라 볼 수 있기에 'A'를 출력하고 그 다음 elif a >= 70은 일단 a >= 90인 조건이 False라서 elif로 온 것이므로 a의 값이 90보다 크거나 같지 않다. 따라서 90 >= a >= 70으로 써줄 필요 없이 a >= 70만 써줘도 무방하다. 70보다 같거나 클 경우가 'B'이므로 a >= 70 조건이 참이라면 'B'를 출력한다. a >= 40은 a >= 70부분과 비슷하니 넘어가고, 마지막으로 이 세 조건이 모두 False일 경우 40보다 아래라는 뜻이므로 'D'를 출력한다.
영문자 1개가 입력되면 평가 내용에 맞게 내용을 출력하는 것이 목적이다.
위 사진이 평가 내용이다.
a = input()
if a == 'A':
print('best!!!')
elif a == 'B':
print('good!!')
elif a == 'C':
print('run!')
elif a == 'D':
print('slowly~')
else:
print('what?')
1068의 조건을 문자로 바꿔서 작성했다. 입력 된 값이 저장 된 a가 'A'일 경우 'best!!!'를, 'B'일 경우 'good!!'을, 'C'일 경우 'run!'을, 'D'일 경우 'slowly~'를, A,B,C,D에 해당되지 않을 경우 'what?'을 출력하도록 ==을 사용해서 작성했다.
입력 된 월에 해당되는 계절 이름을 출력하는 것이 목적이다.
위 사진이 월에 해당하는 계절이다.
a = input()
if a == '12' or a == '1' or a == '2':
print('winter')
elif a == '3' or a == '4' or a == '5':
print('spring')
elif a == '6' or a == '7' or a == '8':
print('summer')
else:
print('fall')
조건 중 하나라도 참이라면 참으로 인식하는 논리 연사자 or를 사용해서 조건을 작성했다. 입력 된 값을 담은 a가 12 or 1 or 2일 경우 'winter'를 출력하고, 3 or 4 or 5일 경우 'spring', 6 or 7 or 8일 경우 'summer', 그리고 12,1,2,3,4,5,6,7,8에 해당하지 않을 경우 입력 값이 9,10,11중 하나이므로 else로 'fall'이 출력되도록 했다.
무작위 개수로 정수가 입력되는데, 이를 순서대로 줄을 바꿔 출력하는 것이 목적이다. 단 0이 입력된다면 종료해야한다.
a = list(map(int,input().split()))
for i in a:
if i == 0:
break
print(i)
list 변수 a로 입력된 값을 모두 정수로 변환하여 list형태로 저장하고, 이 요소들을 이용해 for문을 돌린다. 만약 요소가 차례대로 들어가는 i가 0일 경우 반복문을 탈출시켜주는 break로 즉시 출력을 종료하게 했고, 만약 0이 아니라면 해당 요소를 줄을 바꿔가며 출력되도록 작성했다.
첫 줄에 입력 될 개수가 입력되고 두 번째 줄에 개수만큼 정수가 공백으로 구분되어 입력 된다고 한다. 이 정수들을 줄을 바꿔 출력하는 것이 목적이다.
n = int(input())
a = list(map(int, input().split()))
for i in a:
print(i)
c언어와 달리 파이썬은 입력 개수를 정해줄 필요가 없지만 조건이므로 첫 줄에 입력 될 개수를 받을 변수 n을 선언해줬다. 두 번째 줄에서 입력 값들을 list로 받아오고 그 요소들로 for문을 돌려, 하나하나 줄 바꿔가며 출력되도록 작성했다.
1071과 아에 똑같은 문제다.
a = list(map(int,input().split()))
for i in a:
if i == 0:
break
print(i)
조건도 다른게 없어서 1071 코드를 그대로 사용했다. 버근가?
입력 된 값을 1씩 줄여 0이 될 때까지 출력하는 것이 목적이다.
for i in range(int(input()),0,-1):
print(i)
range(<시작값>,<끝값-1>,<증감폭>)을 사용해서 문제를 해결했다. for문으로 루프를 돌리는데 range로 시작값을 입력값으로 정하고, 끝값을 1까지 출력해야하므로 0, 그리고 증감폭을 -1로 지정해서 입력된 값이 1이 될때까지 -1하고 그 값을 출력하도록 작성했다.
1074번 문제와 비슷하지만 이번 문제는 입력 값에서 1을 빼면서 출력하되 입력 값을 출력하지 않고, 0까지 출력되도록 하는 것이 목적이다.
for i in range(int(input())-1,-1,-1):
print(i)
입력 값을 출력하면 안되므로 range의 시작 값을 -1해주었으며, 0까지 출력되야하므로 끝값을 -1로 설정했다. 증감폭은 동일하다.
'Old (2021.01 ~ 2021.12) > Algorithm' 카테고리의 다른 글
CodeUp 1098 : 설탕과자 뽑기 (0) | 2021.03.07 |
---|---|
CodeUp 1810 : (포인터) 부분 문자열 (0) | 2021.03.07 |
CodeUp 1581 : swap 함수 만들기 (0) | 2021.03.07 |
CodeUp WriteUp With C Language (0) | 2021.02.27 |
CodeUp 1076 ~ 1099 With Python (0) | 2021.02.04 |