Python
![[python] SWEA - 7675. 통역사 성경이](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fsoba2%2FbtqPC2a1tWF%2FAAAAAAAAAAAAAAAAAAAAAIuLD7E0SXEPN4weITdbwZcTpppAUFrClvvYjHwbZTtD%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DeCG5Wxw4Lw9oebTCqt6pJ4v6T%252Bs%253D)
[python] SWEA - 7675. 통역사 성경이
🤔문제 해결 D3 | 문자열 💨 문장으로 구분하고, 단어로 구분하기 💨 이름이 되는 조건은 첫번째 글자가 대문자이고, 나머지는 소문자이다. 첫번째 글자가 하나일 경우는 이름이다. ( 숫자가 섞이면 x, 첫번째는 무조건 소문자, 뒤에 점이든 느낌표든 물음표든 필요없다 ) 위의 두가지 경우가 끝이다. 문제를 조금 헷갈리게.... 💻소스 코드 for tc in range(int(input())): N = int(input()) answer = list() sentence = input() # 문장 구분하기 start = 0 for i in range(len(sentence)): if sentence[i] in ('!', '?', '.'): # 단어로 구분하기 cnt = 0 for word in sentence..
![[python] SWEA - 10580. 전봇대](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FlvwTB%2FbtqPna0cAOj%2FAAAAAAAAAAAAAAAAAAAAAJzCNkQtveBSiBddS-wrSpx8uh39roNpwZLLcP3VB31i%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DrVY9C5MmLV4Dh1xfxM7BlK7bkZE%253D)
[python] SWEA - 10580. 전봇대
🤔문제 해결 lv3 💨 많이 고민했는데 N의 범위가 그렇게 크지 않아서 단순하게 실행했다. 💨 전선을 하나 골라서 나머지 전선들과 비교해준다. 💨 전선이 만난다면 +1 을 해주고 모든 전선을 탐색한다. 💨 A 전선이 B전선을 만나는 경우와 B전선이 A전선을 만나는 경우가 중복되므로 결과에서 나누기 2를 해준다. 💻소스 코드 for tc in range(int(input())): N = int(input()) telephone_pole = [tuple(map(int, input().split())) for _ in range(N)] cnt = 0 for i in range(N): for j in range(N): if i == j: continue if telephone_pole[i][0] < teleph..
![[python] SWEA - 4047. 영준이의 카드 카운팅](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F2JjOS%2FbtqPWYRYNV6%2FAAAAAAAAAAAAAAAAAAAAADkGOgo2hIVUAIhQVPHIXX_S5IHArs3hYt_bmJbO9rHw%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DGagwaVw3DdjBgYibd6ZRw3rVmSo%253D)
[python] SWEA - 4047. 영준이의 카드 카운팅
🤔문제 해결 D3 | 문자열 💨 카드의 종류를 딕셔너리로 만들고 값을 리스트로 한다. 💨 해당 카드를 보유하고 있으면 아웃 💨 해당 카드가 없으면 추가한다. 💨 마지막에 필요한 카드의 수만큼 값을 출력한다. 💻소스 코드 for tc in range(int(input())): cards = input() my_card = { 'S': [], 'D': [], 'H': [], 'C': [], } print(f'#{tc + 1}', end=' ') for i in range(0, len(cards), 3): # 3씩 건너 뛴다. c = cards[i] n = cards[i + 1:i + 3] if n not in my_card[c]: # 해당 카드를 가지고 있지 않은 경우 -> 카드 추가 my_card[c].a..
![[python] 백준 - 17140. 이차원 배열과 연산](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb4Xfrm%2FbtqOzAFTcQQ%2FAAAAAAAAAAAAAAAAAAAAAHMzPLI4qo1NTHc0g1syJWijFomd9aK_qzAPJ9YdTW19%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DfkzJ2E1rZqIdbYzJZhw99Ux%252FWR0%253D)
[python] 백준 - 17140. 이차원 배열과 연산
🤔문제 해결 G4 | 시뮬레이션, 구현 문제를 이해하는데 시간이 좀 걸렸다. k값이 맞는지 확인하고 아니라면 시간을 +1 증가시킨다. R연산인지 C연산인지 확인한다. R 연산일 경우 각 행의 숫자와 해당 숫자의 개수를 리스트나 튜플 형태로 저장한다. [(1, 1), (2, 1)] 이런식으로 sort를 이용해 정렬한다. 튜플을 풀어서 숫자 하나하나의 형태로 리스트에 저장하고 나머지 길이를 0으로 채워넣는다. C 연산일 경우 행과 열을 바꿔서 위의 과정을 똑같이 진행한 후 다시 행과 열을 바꿔준다. 💻소스 코드 def is_k(): if r - 1 < len(arr) and c - 1 < len(arr[0]): if arr[r - 1][c - 1] == k: return True return False de..
![[python] 백준 - 10819. 차이를 최대로](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fcbm2qi%2FbtqOzB5CuBm%2FAAAAAAAAAAAAAAAAAAAAAL-Hp2PPJ0fwabdVwc5JyJbHXb2dFMyp9QZscYPgkwQJ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DuaCSXb31%252FULzKlQZHBeV01LxiPU%253D)
[python] 백준 - 10819. 차이를 최대로
🤔문제 해결 S2 | 완전탐색, 백트래킹 백트래킹을 하려고 했으나, 순열로 푸는게 더 간단해보여서 조합을 이용했다. 숫자들을 배치할 수 있는 모든 경우의 수를 뽑아서 규칙에 맞게 계산을 해주고 최대값을 찾는다. 💻소스 코드 from itertools import permutations def my_sum(numbers_tuple): # 문제의 규칙에 맞게 더하기 total = 0 for i in range(N - 1): total += abs(numbers_tuple[i] - numbers_tuple[i + 1]) return total if __name__ == '__main__': N = int(input()) numbers = list(map(int, input().split())) answer =..
![[python] 백준 - 18428. 감시 피하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdgkGyG%2FbtqOpqqu8R4%2FAAAAAAAAAAAAAAAAAAAAAJmaqcxONsyIzHkNnk-rViU8U32divob932geXLCSWXb%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DH0mCBNrcrL97Fc9qmZicLHmJLAY%253D)
[python] 백준 - 18428. 감시 피하기
🤔문제 해결 S1 | 완전탐색 N의 범위가 매우 작으므로 완전탐색을 하는 문제이다. 벽을 세울 수 있는 빈 공간을 리스트로 구하고, 콤비네이션(3)을 한다. ( 벽을 3개 세워야 하므로 ) 벽을 세우면 감시를 시작한다. 선생님리스트도 만들어서 상하좌우 감시를 한다. 감시를 하던 도중 끝까지 가거나 벽을 만나면 해당 방향의 감시는 멈추고 학생을 만나면 감시에 성공하므로 그 벽은 다시 철거하고 다른 벽을 세운다. 선생님이 모든 방향에 대해서 감시에 실패할 때까지 반복한다. 💻소스 코드 from itertools import combinations as cb def watch(): for teacher in teacher_list: x, y = teacher # 상 nx, ny = x, y while nx >..