문제: 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.
전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.
숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.
할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오.
입력: 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
출력: 첫째 줄에 다이얼을 걸기 위해서 필요한 최소 시간을 출력한다.
알파벳 인덱스에 맞게 숫자배열을 만들어 준 다음, 해당 알파벳의 인덱스가 나오면 li에서 해당 인덱스 숫자+1을 sum에 누적시켜 줌
n = input()
li = [2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9]
sum = 0
for i in range(len(n)) :
for j in range(26) :
if n[i] == chr(j +65) :
sum += li[j] + 1
print(sum)
문제: 동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.
체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.
체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.
동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.
입력: 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
출력: 첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.
li = list(map(int, input().split()))
compareLi = [1, 1, 2, 2, 2, 8]
for i in range(6) :
if li[i] == compareLi[i] : print(0, end=' ')
else : print(compareLi[i] - li[i], end=' ')
문제: 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력: 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력: 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
반대쪽 별 찍기는 거의 어거지로 맞추긴 했는데 흠...
n = int(input())
for i in range(n) :
for j in range(n-i-1) :
print(' ', end='')
for k in range(i*2+1) :
print('*', end='')
print()
for i in range(n) :
for j in range(i+1) :
print(' ', end='')
for k in range((n-i-1)*2-1) :
print('*', end='')
print()
내가 for문을 6개 쓸 때 2개로 쓴 멋진 사람...
a=int(input())
for i in range(1,a+1):
print(' '*(a-i)+'*'*(2*i-1))
for i in range(1,a):
print(' '*i+'*'*(2*a-2*i-1))