이번주는 너무 정신이 없다.
내배캠에서 알고리즘 주차인데, 알고리즘 세계에 빠져서 그야말로 헤어나오지 못하고 있다.
그냥.. 정신 없이 알고리즘 짜다가 저장하는 걸 깜빡한 코드들.. 요기에 모아모아.. ㅎ
for tc in range(1, 11):
length = int(input()) # 찾아야 하는 회문의 길이 length
rows = list(input() for i in range(8)) # 글자판 받기
count = 0 # 찾은 회문 저장할 변수
# 가로줄 탐색
for row in rows: # 줄 8개 돌기
for r in range(9-length):
text = row[r:r+length]
text_reversed = text[::-1]
count += (1 if text == text_reversed else 0)
# 세로줄 탐색
for col in range(8):
col_text = ''.join([rows[r_idx][col] for r_idx in range(8)]) # 세로줄 기준으로 텍스트 만들기
for c in range(9-length):
text = col_text[c:c+length]
text_reversed = text[::-1]
count += (1 if text == text_reversed else 0)
print(f"#{tc} {count}")
T = int(input())
text_list = [input() for i in range(T)]
for text in text_list:
is_palindrome = -1
import math
for i in range(math.ceil(len(text) / 2)):
if text[i] != text[len(text) - 1 - i]:
is_palindrome = 0
break
else:
is_palindrome = 1
print(f"#{text_list.index(text) + 1} {is_palindrome}")
T = int(input())
test_cases = list(input() for t in range(T))
mirrored_text = {'b': 'd', 'd': 'b', 'p': 'q', 'q': 'p'} # 각 문자별로 거울문자 저장
for tc in test_cases:
tc_list = list(tc)
for i in range(len(tc_list)):
tc_list[i] = mirrored_text[tc_list[i]]
mirrored_tc = ''.join(tc_list)
print(f"#{test_cases.index(tc) + 1} {mirrored_tc[::-1]}")
T = int(input())
test_cases = list(input() for t in range(T))
for tc in test_cases:
for i in range(1, len(tc)+1):
pattern = tc[:i]
post_pattern = tc[i:i*2]
if pattern == post_pattern:
pattern_length = len(pattern)
break
print(f"#{test_cases.index(tc) + 1} {pattern_length}")
T = int(input())
for tc in range(T):
n, k = map(int, input().split()) # n은 단어 퍼즐의 가로세로 길이, k는 단어의 길이
puzzle = [list(map(int, input().split())) for n in range(n)] # 단어 퍼즐
answer = 0 # 정답 저장
for i in range(n):
count = 0
# 가로줄 확인
for j in range(n):
if puzzle[i][j] == 1: # 퍼즐이 1일 때
count += 1
if puzzle[i][j] == 0 or j == n-1: # j==n-1 없으면, 마지막 칸에서 끝나는 경우를 셀 수 없음
if count == k: # 지금까지 쌓은 카운트가 단어 길이와 같다면 answer 올리기
answer += 1
count = 0 # 다시 초기화
# 세로줄 확인
for j in range(n):
if puzzle[j][i] == 1:
count += 1
if puzzle[j][i] == 0 or j == n-1:
if count == k:
answer += 1
count = 0
print(f"#{tc+1} {answer}")
def subsequence_sum(idx, sum):
# 합이 k 값이 되는 경우의 수를 저장하기 위한 변수 (전역변수로 선언하여, 함수 종료 후에도 사라지지 않게 함)
global count
if idx >= n: # 인덱스가 자연수 개수 이상이 되면 함수 종료
return
temp = sum + numbers[idx]
if temp == k:
count += 1
subsequence_sum(idx + 1, temp) # (현재 sum 값 + 이전 인덱스 값 + 새로운 인덱스 값)이 k 와 일치하는지 확인
subsequence_sum(idx + 1, sum) # (현재 sum 값 + 새로운 인덱스 값)이 k 와 일치하는지 확인
T = int(input())
for tc in range(T):
n, k = map(int, input().split()) # n은 자연수 개수, k는 원하는 합
numbers = list(map(int, input().split())) # 자연수 리스트로 받기
count = 0 # 각 케이스마다 0으로 초기화
subsequence_sum(0, 0) # 첫번째 0은 인덱스, 두번째 0은 합을 0으로 초기화하여 시작하는 것
print(f"#{tc+1} {count}")
def power(base, exponent):
if exponent < 1:
return 1
else:
return base * power(base, exponent - 1)
for i in range(10):
no = int(input())
n, m = map(int, input().split())
print(f"#{no} {power(n, m)}")
def hamburger(idx, score, cal):
global max_score
if cal > L: # 칼로리 초과
return
if score > max_score: # 현재 점수가 최대 점수보다 크면 저장
max_score = score
if idx == N: # 인덱스가 재료 수만큼 되면 종료
return
hamburger(idx + 1, score + ingredients[idx][0], cal + ingredients[idx][1]) # 현재 재료 선택
hamburger(idx + 1, score, cal) # 현재 재료 미선택
T = int(input()) # 테스트 케이스 수
for tc in range(T):
N, L = map(int, input().split()) # N은 재료의 수, L은 제한 칼로리
ingredients = [list(map(int, input().split())) for n in range(N)] # [점수, 칼로리]
max_score = 0
hamburger(0, 0, 0)
print(f"#{tc+1} {max_score}")
한주가 순식간에 지나가버렸다.
알고리즘은 하나 딱 해결하면 너무 신나는데,
그걸 해결하러 고민하는 과정이 굉장히 힘들고 머리도 아프고 기력이 쭉 빨린다.
그리고 하루종일 아무것도 안한 것 같은.. 성과가 없는 것 같아 슬프다. 😭
다음주는 더 어려워진다는데 큰일났다...
그나저나 이번 조는 너무 좋다.
이번엔 팀장이 되었는데, 팀원분들이 내가 하자는 걸 너무 잘 따라주셔서 하는 나도 신이 난다.
(물론 그분들이 좋아서 따라주는 건지, 걍 싫은데 따라주시는 건진 나도 잘 모르겠다.. ㅠ)
스쿼드 공부방에서도 반장이 되었는데, 칭찬을 많이 받아서,
알고리즘 하느라 힘든 와중에도 일주일 내내 기분 만큼은 좋았다. 😁