시작(1)로부터 주위에 둘러싼 외벽의 방 갯수가 갖는 규칙을 찾아보면 쉽게 풀이 가능하다.
시작(1)은 방하나 그자제라고 생각하면된다.
답안
a = int(input())
if a == 1: # 처음 1은 방 한개 그 자체이다.
print(a)
else: # 이후 외벽들은 6의 배수로 증가
cnt = 1
b = 1
while b < a:
b += cnt*6 # 벌집의 갯수를 파악하기위함
cnt += 1 # 외벽의 갯수를 파악하기위함
print(cnt)
a가 1인 경우 1개의 방 그 자체이기 때문에 시작으로 조건을 걸어준다.
이후 외벽 부턴 6의 배수로 증가한다는 점을 확인할 수 있다. b에는 방의 갯수를 알기위해 6의 배수를 계속 더해 대입해주고
어제에 이어 리스트 + 반복문 뿌시기다. 이번 문제중 4344번이 진짜 너무나도 오래걸렸다...
벌써부터 막히면 안되는데..
[4344] 평균은 넘겠지
해결 포인트
테스트 케이스를 받아 그 수만큼 점수를 받아야한다.
그리고 받은 데이터 인덱스 0은 학생의 수 이며 이후는 각 학생의 점수를 받는다.
그렇게 첫번째 리스트가 완성되면 인덱스 0(학생수) 를 제외하고 더한값을 변수에 저장하고 인덱스 0(학생수)로 나누어 평균값을 변수에 저장한다.
평균값과 각 학생 점수를 비교하여 카운트하여 평균을 넘는 학생수를 구하고 전체 학생수를 이용해 비율을 구한다.
답안
a = int(input())
b = []
result = []
for i in range(a):
b.append(list(map(int, input().split())))
sum = 0
avg = 0
count = 0
for j in range(len(b[i])-1):
sum = sum + b[i][j+1]
avg = sum / b[i][0]
for n in range(len(b[i])-1):
if avg < b[i][n+1]:
count = count + 1
result.append(count/b[i][0]*100)
for m in range(len(result)):
print('%.3f'%(result[m])+'%')
[2739] 구구단
해결 포인트
for문을 사용하면 0부터 시작한다는것을 인지하고 작성해보자
답안
a = int(input())
for i in range(9):
print("{} * {} = {}".format(a, i+1, a*(1+i)))
[10950] A+B -3
해결 포인트
처음에 입력받는 수 만큼 이후 값들을 입력받아야한다.
답안
a = int(input())
for i in range(a):
x,y = input().split()
print(int(x)+int(y))
[8393] 합
해결 포인트
이전 구구단 문제와 같이 for문 사용시 0부터 시작한다는 점을 고려하여 작성하면 된다.
답안
a = int(input())
sum = 0
for i in range(a):
sum = sum + (i+1)
print(sum)
[25304} 영수증
해결 포인트
두번째로 받는 물건 종류 수대로 아래 각 물건 가격과 개수를 받고
받은 가격과 개수를 곱해 변수에 저장한다.
각각의 물건 총 값을 더해 기존 입력 받은 총금액과 일치하는지 알아보면된다.
답안
sum = int(input())
sum2 = 0
a = int(input())
for i in range(a):
x,y = input().split()
sum2 = sum2 + (int(x)*int(y))
if sum == sum2:
print("Yes")
else:
print("No")
해당 사이트에 코드를 입력하면 스탭별로 로직 흐름을 알 수 있다. 오래걸리더라도 꼭해보길 권한다.
답안
a = int(input())
b = []
count = 0
sum = 0
for i in range(a):
s = input()
b.append(s)
for j in range(len(b)):
for n in range(len(b[j])):
if b[j][n] == "O":
count += 1
sum += count
elif b[j][n] == "X":
count = 0
count = 0
print(sum)
sum = 0
A = int(input())
if 90<=A<101:
print("A")
elif 80<=A<90:
print("B")
elif 70<=A<80:
print("C")
elif 60<=A<70:
print("D")
else:
print("F")
이정도는 큰 어려움 없이 클리어~!
[2753] 윤년
답안
A = int(input())
if A%4 == 0 and (A%100 != 0 or A%400 == 0):
print("1")
else:
print("0")
이정도도 문제없이 클리어
[14681] 사분면그리기
답안
A = int(input())
B = int(input())
if A>0 and B>0:
print("1")
elif A<0 and B>0:
print("2")
elif A>0 and B<0:
print("4")
elif A<0 and B<0:
print("3")
해당 문제는 A와B 값을 따로 받았다.
문제 없이 클리어!
[2884] 알람시계
해결 포인트
입력된 시간보다 45분이 단축되어 표시해줘야하는데... 주어진 분이 45분 이상이면 시간은 줄어들지 않지만 45분 미만이면 시간은 -1되어 나타나야한다. 따라서 이를 가지고 IF문을 걸어줬으며 이에 따른 출력 분에는 +15 시켜줬다.
답안
H,M = map(int,input().split())
if 45<=M<=59:
print(H,M-45)
elif 0<=M<45:
if 0<H:
print(H-1,M+15)
elif 0==H:
print(23,M+15)
[2525] 오븐 시계
해결 포인트
사용자로부터 시작 시간(시/분)과 소요시간(분)을 입력받아 시간을 더해 출력하는 문제이다.
시작 시간 = A, 시작 분 = B, 소요 분 = C이라 가정했을때 B와 C 합친 값이 60을 넘어가면 A에 영향을 주기때문에 이를 먼저 IF 걸어주었다.
추가로 A가 가질 정수 값은 0~24까지이다. 이를 고려하여 다시한먼 IF를 걸어줘야한다. 아래 답안을 참고하길 바란다.
답안
A,B = map(int,input().split())
C = int(input())
if (B + C) >= 60:
if 0 <= ((B+C)/60 + A) <= 24:
print("{} {}".format(int((B+C)/60 + A),(B+C)%60))
else:
print("{} {}".format(int((((B+C)/60 + A))-24),(B+C)%60))
else:
print("{} {}".format(A,B+C))
[2480] 주사위 세개
해결 포인트
보기엔 비교적 간단해보이나 / 연산자를 이용하면 소숫점 까지 나타날것이다. 이를 해결하고자 int 형으로 변환하는 작업을 했지만 // 연산자를 사용하게 되면 정수로만 사용가능하다.
답안
A,B,C = map(int,input().split())
if A==B==C:
print(10000+A*1000)
elif A==B or A==C or B==C:
if A==B:
print(1000+A*100)
elif A==C:
print(1000+A*100)
elif B==C:
print(1000+B*100)
elif A!=B!=C:
if A > B and A > C:
print(A*100)
elif B > A and B> C:
print(B*100)
elif C > A and C > B:
print(C*100)