분류 전체보기

    [SWEA] #1216. 회문 2_파이썬

    풀기 전 생각해보기😮 유사문제 : 2022.08.16 - [SSAFY/SWEA] - [SWEA] #4861. 회문_파이썬 팰린드롬 구현하기 풀이🛫 # 회문 2 T = 10 for t in range(T): tc = int(input()) arr = [list(input()) for i in range(100)] totalLi = [] for col in range(100): for row in range(100): # 짝수 개가 같을 때 if arr[col][row-1] == arr[col][row]: l = 1 while 0

    [SWEA] #4861. 회문_파이썬

    풀기 전 생각해보기😮 이차원 배열에서 회문 찾기 풀이🛫 T = int(input()) for t in range(T): N, M = map(int, input().split()) arr = [list(input()) for i in range(N)] li = [] # row 방향 탐색 for col in range(N): for row in range(N): # M이 짝수일 때 if M%2==0 and arr[col][row-1] == arr[col][row]: l = 1 while 0

    [SWEA] #12712. 파리퇴치3_파이썬

    풀기 전 생각해보기😮 +방향, x방향에 대해서 어떻게 탐색할 것인가 세기가 달라질 때를 고려하는 방법은? 풀이🛫 T = int(input()) for t in range(T): N, M = map(int, input().split()) arr = [list(map(int, input().split())) for i in range(N)] catch = [] answer = 0 # +형: 12, 3, 6, 9 dpcol = [-1, 0, 1, 0] dprow = [0, 1, 0, -1] # x형: 2, 4, 8, 10 dxcol = [1, -1, -1, 1] dxrow = [1, 1, -1, -1] # 세기가 M일 때 +형에서 잡을 수 있는 파리의 수 for col in range(N): for row i..

    [파이썬] 시프트 연산자 이용

    ※ 일반적으로 시프트 연산자를 이용해 구한 값은 일반적인 수식을 이용해 계산한 값보다 빠르게 처리된다 (기계어) 홀수 / 짝수 판별 if 10 & 1: # 홀수 pass else: # 짝수 pass 10은 이진법에서 1010, 1은 이진법에서 000 & 연산으로 묶여있기 때문에 위 코드는 False가 도출된다 True일 경우 홀수, False일 경우 짝수이므로 결과값은 짝수이다 → 10에 다른 값을 넣어주어서 홀수/짝수 판별에 이용할 수 있다 정수형의 2의 제곱, 2의 제곱근 # 2의 n제곱 print(10n) 10 * 2^n과 같은 연산이 수행된다. 만약 10

    [SWEA] 1959. 두 개의 숫자열

    풀기 전 생각해보기😮 다중 for 구문의 구현 풀이🛫 # 1959. 두 개의 숫자열 T = int(input()) for t in range(T): N, M = map(int, input().split()) A = list(map(int, input().split())) B = list(map(int, input().split())) li = [] if N M: for j in range(N-M+1): total = 0 for i in range(M): total += A[i+j]*B[i] li.append(total) ..

    [알고리즘] 문자열 패턴 매칭

    패턴 매칭에 사용되는 알고리즘 고지식한 패턴 검색 알고리즘(=Brute Force) 카프-라빈 알고리즘 KMP 알고리즘 보이어-무어 알고리즘 고지식한 패턴 검색 (Brute Force) 문자열을 처음부터 끝까지 차례대로 순회, 패턴 내의 문자들을 일일이 비교 텍스트에서 패턴이 존재하는 모든 위치를 찾는 문제 시간복잡도 : O(MN) M: 패턴의 길이, N: 텍스트의 길이 최악의 경우 텍스트의 모든 위치에 대해 패턴을 비교해야 함 패턴 매칭 알고리즘의 중요 포인트 일치하는 경우 ( t[i] == p[j] ) i, j를 증가시켜서 다음 문자를 비교 불일치하는 경우 다음 매칭의 시작위치로 i, j 값을 설정 ※ 자주 사용되는 대치어 텍스트 패턴 기본 t p 인덱스 i j 길이 m n KMP 알고리즘 불일치가 ..

    [SWEA] #4831. 전기버스_파이썬

    풀기 전 생각해보기😮 정답을 도출하는데 필요한 조건만 구현하기 인덱스 주의 풀이🛫 T = int(input()) for t in range(T): K, N, M = map(int, input().split()) station = [0] + list(map(int, input().split())) + [10] curIdx = 0# 현재의 위치 charCnt = 0 # 충전 횟수 for i in range(1, M+2): # 목적지에 도달할 수 없는 경우 if station[i] - station[i-1] > K: answer = 0 break if curIdx + K < station[i]: curIdx = station[i] charCnt += 1 print(f"#{t+1}", charCnt) 핵심 정리..

    [SWEA] #1211. Ladder2_파이썬

    풀기 전 생각해보기😮 2022.08.11 - [SSAFY/SWEA] - [SWEA] #1210. Ladder1_파이썬과 유사한 문제 이동 가능한 범위에 대해 조건 주의해서 설정하기 좌, 우 방향으로만 이동하는 양을 비교해도? 풀이🛫 T = 10 for t in range(T): testcase = int(input()) arr = [list(map(int, input().split())) for i in range(100)] # 출발 가능한 인덱스를 구함 startList = [] for i in range(100): if arr[0][i] == 1: startList.append(i) def cntRoute(startRow): col, row = 0, startRow cntSide = 0 while c..

    [SWEA] #1210. Ladder1_파이썬

    풀기 전 생각해보기😮 시작점에서 출발하는게 편할까? 도착점에서 출발하는게 편할까? 특정 조건을 만족할 때까지 전진시키는 방법 풀이🛫 T = 10 for t in range(T): case = int(input()) arr = [list(map(int, input().split())) for i in range(100)] # 도착지점의 인덱스 찾기 col, row = 0, 0 for end in range(100): if arr[99][end] == 2: col = 99 row = end break # 출발점에 도착할 때까지 진행 while col != 0: # col == 0: 시작점 # 왼쪽에 길이 있을 때 if row-1 >= 0 and arr[col][row-1] == 1: while row-1 >..

    [Today I Learn] 2022.08.11

    TIL - 알고리즘 문제풀이 1210. Ladder 4837. 부분 집합 합 4843. 특별한 정렬 배열_색칠하기 이진탐색 What I did 비트연산자 이동 이차원 배열 문제 풀이 Memo 힘든만큼 성취감이 컸다