[8/22] 이코테 구현

이경준·2021년 8월 22일
0

코테

목록 보기
84/140
post-custom-banner

예제 4-2

114

내 코드

n = int(input())
cnt = 0

# 시간 단위
for h in range(n+1):
    # 분 단위
    for m in range(60):
        # 초 단위
        for s in range(60):
            if ( '3' in str(s) or '3' in str(m) or '3' in str(h) ):
                cnt += 1
                
print(cnt)

로직

  • 쉬운 구현

2. 왕실의 나이트

116

내 코드

k = input()
h = k[1]
w = k[0]
w = ord(w) - 96
cnt = 0

move_h = [-2, -1, 2, 1, -2, -1, 2, 1]
move_w = [-1, -2, -1, -2, 1, 2, 1, 2]

for i in range(8):
    temp_h = int(h) + move_h[i]
    temp_w = int(w) + move_w[i]
    
    if ( 1 <= temp_h <= 8 and 1 <= temp_w <= 8 ):
        cnt += 1
        
print(cnt)

로직

  • 쉬운 구현

3. 게임 개발

119

내 코드

n, m = map(int, input().split())
h, w, d = map(int, input().split())
arr = []

for _ in range(n):
    temp = list(map(int, input().split()))
    arr.append(temp)
    
land = 1
arr[h][w] = 2

cnt = 0
while True:
    # 방향 회전 (1단계)
    if d == 0: 
        d = 3
    else:
        d -= 1

    # 갈 수 있는지 확인
    if d == 0:
        temp_h, temp_w = h - 1, w
    elif d == 3:
        temp_h, temp_w = h, w - 1
    elif d == 2:
        temp_h, temp_w = h + 1, w
    elif d == 1:
        temp_h, temp_w = h, w + 1


    if arr[temp_h][temp_w] == 0:
        land += 1
        h, w = temp_h, temp_w
        arr[h][w] = 2
        cnt = 0
    else:
        cnt += 1
        
    # 동서남북 갈 곳이 없으면
    if cnt == 4:
        if d == 0: 
            d = 3
        else:
            d -= 1
        
        if d == 0:
            temp_h, temp_w = h + 1, w
        elif d == 3:
            temp_h, temp_w = h, w + 1
        elif d == 2:
            temp_h, temp_w = h - 1, w
        elif d == 1:
            temp_h, temp_w = h, w - 1
        
        if arr[temp_h][temp_w] == 1:
            break
        else:
            h, w = temp_h, temp_w
    
print(land)

로직

  • 시뮬레이션 문제


<7> 럭키 스트레이트

321 (브론즈2)

내 코드

n = input()
num = len(n)//2

one = list(map(int, n[:num]))
two = list(map(int, n[num:]))

o = sum(one)
t = sum(two)

if (o == t):
    print('LUCKY')
else:
    print('READY')

로직

  • 반으로 나누고, 합을 구해서 비교

<8> 문자열 재정렬

322

내 코드

s = input()

alpha = [i for i in s if i.isalpha()]
number = [int(j) for j in s if j.isdigit()]

alpha.sort()
num = sum(number)

alpha = "".join(alpha)
print(alpha + str(num))

로직

  1. 알파벳과 숫자를 분리한다.
  2. 알파벳 리스트는 정렬하고, 숫자는 합을 구한다.
  3. 합쳐준다.

<9> 문자열 압축

323 (레벨2) 문제

내 코드

def solution(s):
    answer = len(s)
    
    for i in range(1, (len(s)//2)+1 ):
            
        word = ''
        pivot = ''
        cnt = 1
        
        for j in range(0, len(s), i):
            
            if ( s[j:j+i] == pivot ):
                cnt += 1
            else:
                if (cnt != 1):
                    word = word + str(cnt) + pivot
                else:
                    word = word + pivot
                pivot = s[j:j+i]
                cnt = 1
        
        if (cnt != 1):
            word = word + str(cnt) + pivot
        else:
            word = word + pivot
        
        answer = min(answer, len(word))
        
    return answer

로직

  1. 쪼갤 숫자를 하나씩 늘려가면서 길이 최소값을 비교한다. (최대 절반으로 쪼개짐)
  2. for문을 사용해서 합쳐준다 (코드 더 줄일수 있는 방법이 필요)
  3. 길이를 비교해서 더 짧으면 answer를 바꿔준다.

<10> 자물쇠와 열쇠

325 (레벨3) 문제


<11> 뱀

327 (골드5) 문제
풀이


<12> 기둥과 보 설치

329 (레벨3) 문제


<13> 치킨 배달

332 (골드5) 문제


<14> 외벽 점검

334 (레벨3) 문제

profile
The Show Must Go On
post-custom-banner

0개의 댓글