문제링크 : www.acmicpc.net/problem/1436

 

1436번: 영화감독 숌

666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타

www.acmicpc.net



정답 코드

N = int(input())
n = 666
count = 0

while True:
    if '666' in str(n):
        count += 1
    
    if count == N:
        print(n)
        break
    n += 1

 

문제 풀이

이번 문제는 가능한 모든 경우의 수를 검사하는 '브루트포스 알고리즘'에 해당하는 문제이다.

 

문제에서 가장 중요하게 요구되는 것은 연속된 3번 이상의 6을 포함한 숫자를 찾는 것이다.

 

1. 666

2. 1666

3. 2666

4. 3666

5. 4666

...

 

처음 1번째 수는 666으로 지정하고 그로부터 '666'이 포함된 숫자를 찾아나가며, 숫자를 찾을 때마다 count를 1씩 증가시킨다. 이 과정을 반복하면서 찾으려고하는 N번째 숫자와 count가 일치하면 반복문을 종료하며, 결과값을 출력한다.

1081 [기초-종합] 주사위를 2개 던지면?

a, b = map(int, input().split())
for i in range(1,a+1):
    for j in range(1, b+1):
        print(i, j)

1082 [기초-종합] 16진수 구구단?

a = int(input(), 16)
for i in range(1,16):
    print("%X*%X=%X" %(a,i,a*i))

1083 [기초-종합] 3 6 9 게임의 왕이 되자!

a = int(input())

for i in range(1, a+1):
    if(i%3==0):
        print("X", end=" ")
    else:
        print(i, end=" ")

1084 [기초-종합] 빛 섞어 색 만들기

r, g, b = map(int, input().split())
cnt = 0

for i in range(r):
    for j in range(g):
        for k in range(b):
            print(i, j, k)
            cnt += 1

print(cnt)

1085 [기초-종합] 소리 파일 저장용량 계산하기

h, b, c, s = map(int, input().split())
size = h*(b>>2)*c*s
print("%0.1f MB" %(size/(2<<20)))

h, b, c, s = map(int, input().split())
size = h*b*c*s
print("%0.1f MB" %(size/(8*1024*1024)))

1086 [기초-종합] 그림 파일 저장용량 계산하기

w, h, b = map(int, input().split())
size = w*h*b
print("%.2f MB" %(size/(8*1024*1024)))

1087 [기초-종합] 여기까지! 이제 그만~

a = int(input())
sum = 0
i = 1
while(1):
    if sum < a:
        sum += i
        i += 1
    else:
        break

print(sum)

1088 [기초-종합] 3의 배수는 통과?

a = int(input())

for i in range(1,a+1):
    if(i%3==0):
        continue
    print(i, end=" ")

1089 [기초-종합] 수 나열하기1

a, d, n = map(int, input().split())
sum = a
for i in range(1,n):
    sum += d
print(sum)

1090 [기초-종합] 수 나열하기2

a, r, n = map(int, input().split())
sum = a
for i in range(1, n):
    sum *= r
print(sum)

1091 [기초-종합] 수 나열하기3

a, m, d, n = map(int, input().split())
result = a

for i in range(1, n):
    result = (result*m) + d
print(result)

1092 [기초-종합] 함께 문제 푸는 날

a, b, c = map(int,input().split())
day = 1

while(1):
    if(day%a==0 and day%b==0 and day%c ==0):
        break
    day += 1
print(day)

a, b, c = map(int,input().split())
day = 1

while(day%a != 0 or day%b != 0 or day%c != 0):
    day += 1
print(day)

1093 [기초-1차원배열] 이상한 출석 번호 부르기1

n = int(input())
x = list(map(int,input().split()))
a = []

for i in range(23):
    a.append(0)

for j in x:
    a[j-1] += 1

for k in a:
    print(k, end=" ")

1094 [기초-1차원배열] 이상한 출석 번호 부르기2

n = int(input())
k = list(map(int,input().split()))
x = []

for a in range(n):
    x.append(0)

for b in range(n):
    x[b] = k[n-b-1]

for c in x:
    print(c, end = " ")

n = int(input())
k = list(map(int,input().split()))

for i in range(n):
    print(k[n-i-1], end = " ")

1095 [기초-1차원배열] 이상한 출석 번호 부르기3

n = int(input())
k = list(map(int,input().split()))
min = k[0]

for i in range(n):
    if min >= k[i]:
        min = k[i]
print(min)

1096 [기초-2차원배열] 바둑판에 흰 돌 놓기

n = int(input())
board = []
for i in range(19):
    board.append([])
    for j in range(19):
        board[i].append(0)

for j in range(n):
    x, y = map(int, input().split())
    board[x-1][y-1] = 1

for a in range(19):
    for b in range(19):
        print(board[a][b], end=" ")
    print()

1097 [기초-2차원배열] 바둑알 십자 뒤집기

board = []
for i in range(19):
    board.append([])
    x_board = list(map(int,input().split()))
    for j in x_board:
        board[i].append(j)

n = int(input())
for k in range(n):
    x, y = map(int,input().split())
    
    for x_i in range(19):
        if(board[x_i][y-1]==0): board[x_i][y-1] = 1
        else: board[x_i][y-1]=0
    
    for y_i in range(19):
        if(board[x-1][y_i]==0): board[x-1][y_i] = 1
        else: board[x-1][y_i]=0
        
for a in range(19):
    for b in range(19):
        print(board[a][b], end=" ")
    print()

1098 [기초-2차원배열] 설탕과자 뽑기

h, w = map(int, input().split())

board = []
for i in range(h):
    board.append([])
    for j in range(w):
        board[i].append(0)

n = int(input())

for k in range(n):
    l, d, x, y = map(int, input().split())
    
    if d==0: # 가로
        for i in range(y-1,l+y-1):
            board[x-1][i] = 1
    
    if d==1: # 세로
        for j in range(x-1, l+x-1):
            board[j][y-1] = 1
            
for a in range(h):
    for b in range(w):
        print(board[a][b], end=" ")
    print()

1099 [기초-2차원배열] 성실한 개미

board = []
for i in range(10):
    board.append([])
    x_board = list(map(int,input().split()))
    for j in x_board:
        board[i].append(j)

x = y = 1 # start point

while True:
    if board[x][y] == 0:
        board[x][y] = 9
    elif board[x][y] == 2:
        board[x][y] = 9
        break
    
    if (board[x][y+1] == 1 and board[x+1][y] == 1): break
    
    if board[x][y+1] == 1: x += 1
    else: y+= 1
    
for a in range(10):
    for b in range(10):
        print(board[a][b], end=" ")
    print()

1061 [기초-비트단위논리연산] 비트단위로 OR 하여 출력하기

a, b = map(int, input().split())
print(a|b)

1062 [기초-비트단위논리연산] 비트단위로 XOR 하여 출력하기

a, b = map(int, input().split())
print(a^b)

1063 [기초-삼항연산]두 정수 입력받아 큰 수 출력하기

a, b = map(int, input().split())
print("%d"%(a if a>b else b))

1064 [기초-삼항연산] 정수 3개 입력받아 가장 작은 수 출력하기

a, b, c = map(int, input().split())
print("%d" % (a if a<(b if b<c else c) else (b if b<c else c)))

1065 [기초-조건/선택실행구조] 정수 3개 입력받아 짝수만 출력하기

a, b, c = map(int, input().split())
if(a%2==0): print(a)
if(b%2==0): print(b)
if(c%2==0): print(c)

1066 [기초-조건/선택실행구조] 정수 3개 입력받아 짝/홀 출력하기

a, b, c = map(int, input().split())
print("%s" % ("even" if a%2==0 else "odd"))
print("%s" % ("even" if b%2==0 else "odd"))
print("%s" % ("even" if c%2==0 else "odd"))

1067 [기초-조건/선택실행구조] 정수 1개 입력받아 분석하기

a = int(input())
if(a<0):    
    if(a%2==0):
        print("minus")
        print("even")
    else:
        print("minus")
        print("odd")

else:
    if(a%2==0):
        print("plus")
        print("even")
    else:
        print("plus")
        print("odd")
a = int(input())
print("%s" %("minus" if a<0 else "plus"))
print("%s" %("even" if a%2==0 else "odd"))

1068 [기초-조건/선택실행구조] 정수 1개 입력받아 평가 출력하기

a = int(input())

if(a>=90): print("A")
elif(a>=70): print("B")
elif(a>=40): print("C")
else: print("D")

1069 [기초-조건/선택실행구조] 평가 입력받아 다르게 출력하기

a = ord(input())

if(a==65):print("best!!!")
elif(a==66):print("good!!")
elif(a==67):print("run!")
elif(a==68):print("slowly~")
else:print("what?")

1070 [기초-조건/선택실행구조] 월 입력받아 계절 출력하기

a = int(input())

if(a>=3 and a<=5): print("spring")
elif(a>=6 and a<=8): print("summer")
elif(a>=9 and a<=11): print("fall")
else: print("winter")

1071 [기초-반복실행구조] 0 입력될 때까지 무한으로 출력하기1

a = list(map(int,input().split()))
    
for i in a:
    if(i==0): break
    else: print(i)

1072 [기초-반복실행구조] 정수 입력받아 계속 출력하기

a = int(input())
b = list(map(int,input().split()))

for i in b:
    print(i)

1073 [기초-반복실행구조] 0 입력될 때까지 무한으로 출력하기2

a = list(map(int,input().split()))
    
for i in a:
    if(i==0): break
    else: print(i)

1074 [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기1

a = int(input())

while(a!=0):
    print(a)
    a -= 1

1075 [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기2

a = int(input())

while(a!=0):
    print(a-1)
    a -= 1

1076 [기초-반복실행구조] 문자 1개 입력받아 알파벳 출력하기

a = ord(input())
i = ord('a')
while(1):
    if(i<=a):
        print("%c" %i)
        i += 1
    else: break

1077 [기초-반복실행구조] 정수 1개 입력받아 그 수까지 출력하기

a = int(input())

for i in range(a+1):
    print(i)

1078 [기초-종합] 짝수 합 구하기

a = int(input())
sum = 0

for i in range(1, a+1):
    if(i%2==0):
        sum += i
print(sum)

1079 [기초-종합] 원하는 문자가 입력될 때까지 반복 출력하기

a = list(input().split())
    
for i in a:
    print("%c" %i)
    if(i=='q'): break

1080 [기초-종합] 언제까지 더해야 할까?

a = int(input())
sum = 0
for i in range(1,a):
    if(sum<a): sum += i
    else: break
print(i-1)

1041 [기초-산술연산] 문자 1개 입력받아 다음 문자 출력하기

x = ord(input())
print("%c"%(x+1))

1042 [기초-산술연산] 정수 2개 입력받아 나눈 몫 출력하기

a, b = map(int,input().split())
print(int(a/b))

1043 [기초-산술연산] 정수 2개 입력받아 나눈 나머지 출력하기

a, b = map(int,input().split())
print(a%b)

1044 [기초-산술연산] 정수 1개 입력받아 1 더해 출력하기

a = int(input())
print(a+1)

1045 [기초-산술연산] 정수 2개 입력받아 자동 계산하기

a, b = map(int,input().split())
print(a+b)
print(a-b)
print(a*b)
print(int(a/b))
print(a%b)
print("%.2f"%(a/b))

1046 [기초-산술연산] 정수 3개 입력받아 합과 평균 출력하기

a, b, c = map(int,input().split())
print(a+b+c)
print("%.1f" %((a+b+c)/3))

1047 [기초-비트시프트연산] 정수 1개 입력받아 2배 곱해 출력하기

a = int(input())
print("%d" % (a<<1))

1048 [기초-비트시프트연산] 한 번에 2의 거듭제곱 배로 출력하기

a, b = map(int, input().split())
print("%d" %(a<<b))

1049 [기초-비교연산] 두 정수 입력받아 비교하기1

a, b = map(int, input().split())
print("%d" %(a>b))

1050 [기초-비교연산] 두 정수 입력받아 비교하기2

a, b = map(int, input().split())
print("%d" %(a==b))

1051 [기초-비교연산] 두 정수 입력받아 비교하기3

a, b = map(int,input().split())
print("%d" %(b>=a))

1052 [기초-비교연산] 두 정수 입력받아 비교하기4

a, b = map(int,input().split())
print("%d" %(a!=b))

1053 [기초-논리연산] 참 거짓 바꾸기

a = int(input())
print("%d" %(not a))

1054 [기초-논리연산] 둘 다 참일 경우만 참 출력하기

a, b = map(int, input().split())
print("%d" %(a and b))

1055 [기초-논리연산] 하나라도 참이면 참 출력하기

a, b = map(int, input().split())
print("%d" %(a or b))

1056 [기초-논리연산] 참/거짓이 서로 다를 때에만 참 출력하기

a, b = map(int, input().split())
print("%d" %(a!=b))

1057 [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기

a, b = map(int, input().split())
print("%d" %(a == b))

1058 [기초-논리연산] 둘 다 거짓일 경우만 참 출력하기

a, b = map(int, input().split())
print("%d" %(not(a or b)))

1059 [기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기

a = int(input())
print("%d" %(~a))

1060 [기초-비트단위논리연산] 비트단위로 AND 하여 출력하기

a, b = map(int, input().split())
print("%d" %(a&b))

1021 [기초-입출력] 단어 1개 입력받아 그대로 출력하기

s = input()
print(s)

1022 [기초-입출력] 문장 1개 입력받아 그대로 출력하기

s = input()
print(s)

1023 [기초-입출력] 실수 1개 입력받아 부분별로 출력하기

a, b = input().split(".")
print(a)
print(b)

1024 [기초-입출력] 단어 1개 입력받아 나누어 출력하기

 

word = input()
a = 0
for i in word:
    print("\'%c\'" % word[a])
    a += 1

1025 [기초-입출력] 정수 1개 입력받아 나누어 출력하기

 

n = int(input())
e = n % 10
d = n % 100 - e
c = n % 1000 - (d+e)
b = n % 10000 - (c+d+e)
a = n - (b+c+d+e)
print("[%d]\n[%d]\n[%d]\n[%d]\n[%d]" %(a,b,c,d,e))
n = input()
print("[" + str(int(n[0])*10000) + "]")
print("[" + str(int(n[1])*1000) + "]")
print("[" + str(int(n[2])*100) + "]")
print("[" + str(int(n[3])*10) + "]")
print("[" + str(int(n[4])) + "]")

1026 [기초-입출력] 시분초 입력받아 분만 출력하기

 

h, m, s = input().split(":")
print(int(m))

1027 [기초-입출력] 년월일 입력받아 형식 바꿔 출력하기

 

y, m, d = input().split(".")
print("%02d-%02d-%04d" %(int(d),int(m),int(y)))

1028 [기초-데이터형] 정수 1개 입력받아 그대로 출력하기2

 

n = int(input())
print(n)

1029 [기초-데이터형] 실수 1개 입력받아 그대로 출력하기2

 

n = float(input())
print("%.11f" % n)

1030 [기초-데이터형] 정수 1개 입력받아 그대로 출력하기3

 

n = int(input())
print(n)

1031 [기초-출력변환] 10진 정수 1개 입력받아 8진수로 출력하기

 

n = int(input())
print("%o" % n)

1032 [기초-출력변환] 10진 정수 입력받아 16진수로 출력하기1

 

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

1033 [기초-출력변환] 10진 정수 입력받아 16진수로 출력하기2

 

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

1034  [기초-출력변환] 8진 정수 1개 입력받아 10진수로 출력하기

 

n = int(input(),8)
print("%d" % n)

1035 [기초-출력변환] 16진 정수 1개 입력받아 8진수로 출력하기

 

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

 

1036 [기초-출력변환] 영문자 1개 입력받아 10진수로 출력하기

n = ord(input())
print("%d" % n)

1037 [기초-출력변환] 정수 입력받아 아스키 문자로 출력하기

 

n = chr(int(input()))
print(n)

1038 [기초-산술연산] 정수 2개 입력받아 합 출력하기1

 

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

1039 [기초-산술연산] 정수 2개 입력받아 합 출력하기2

 

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

1040 [기초-산술연산] 정수 1개 입력받아 부호 바꿔 출력하기

 

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

1001 [기초-출력] 출력하기1

print("Hello")

1002 [기초-출력] 출력하기2

print("Hello World")

1003 [기초-출력] 출력하기3

print("Hello\nWorld")

1004 [기초-출력] 출력하기4

print("\'Hello\'")

1005 [기초-출력] 출력하기5

print("\"Hello World\"")

1006 [기초-출력] 출력하기6

print("\"!@#$%^&*()\"")

1007 [기초-출력] 출력하기7

print("\"C:\Download\hello.cpp\"")

1008 [기초-출력] 출력하기8

print("\u250C\u252C\u2510")
print("\u251C\u253C\u2524")
print("\u2514\u2534\u2518")

1010 [기초-입출력] 정수 1개 입력받아 그대로 출력하기

n = int(input())
print(n)

1011 [기초-입출력] 문자 1개 입력받아 그대로 출력하기

n = input()
print(n)

1012 [기초-입출력] 실수 1개 입력받아 그대로 출력하기

x = float(input())
print("%f" % n)
x = float(input())
print(n)

- 이 경우에 아래의 코드는 정답처리가 되지않았다. 특별히 다른 부분이 없는 것 같은데 파이썬 언어의 문제인지 확인이 필요하다.

 

1013 [기초-입출력] 정수 2개 입력받아 그대로 출력하기

x, y = map(int,input().split())
print(x,y)

1014 [기초-입출력] 문자 2개 입력받아 순서 바꿔 출력하기

x, y = input().split()
print(y,x)

1015 [기초-입출력] 실수 입력받아 둘째 자리까지 출력하기

x = float(input())
print("%.2f" % x )

1017 [기초-입출력] 정수 1개 입력받아 3번 출력하기

x = int(input())
print(x, x, x)

1018 [기초-입출력] 시간 입력받아 그대로 출력하기

h, m = input().split(":")
print(int(h), int(m), sep=":")

1019 [기초-입출력] 연월일 입력받아 그대로 출력하기

y, m, d = map(int,input().split("."))
print("%04d.%02d.%02d" %(y,m,d))

1020 [기초-입출력] 주민번호 입력받아 형태 바꿔 출력하기

x, y = map(int,input().split("-"))
print("%06d%07d"%(x,y))

+ Recent posts