일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Spring Boot
- JVM
- 백준 파이썬
- Kotlin
- Spring
- 프로래머스
- JPA
- 프로그래머스
- 백준 19238
- spring cloud
- MSA
- 백준 16235
- 백준 16236
- 웹어플리케이션 서버
- 파이썬
- spring security
- sql 기술면접
- with recursive
- 백준 16719
- java
- 백준 15685
- Coroutine
- springboot
- 백준
- MySQL
- spring oauth
- re.split
- 백준 17626
- 백준 17779
- java 기술면접
- Today
- Total
목록파이썬 (92)
시작이 반
구현 문제이다. 해당 블록에 대한 2차원 배열을 생성하였다. 배열은 그림에서 90도 회전한 것처럼 만들었다. 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 0 1 0 0 0 1 1 0 열을 하나씩 보면서 처음 1이 나왔을때부터 count를 1씩 증가시켰고 다음 1이 나오면 정답에 더해줬다. 만약 처음에 1이 나온시점부터 다음에 1이 나오지 않았다면 0을 더해준다. from collections import deque h, w = map(int, input().split(' ')) blocks = deque(list(map(int, input().split(' ')))) graph = [[0] * h for _ in range(w)] for i in range(w): b..
구현, 재귀 문제이다. 여기서 생각해야 하는 문제는 숫자가 세자리 이상일때 3등분을 해야 하는데 어떻게 해야할지 이다. 간단하게 모든 경우의 수를 구하여 3등분을 한다. 2중 반복문을 통해서 구역을 나눌수 있다. 분할한 구역으로 새로운 숫자를 만들어서 다시 재귀를 돌린다. 새로운 숫자가 한자리 숫자일때까지 재귀를 돌린다. import math n = input() min_v = math.inf max_v = 0 def command1(n: str): odd_n = 0 for i in n: if int(i) % 2 != 0: odd_n += 1 return odd_n def solve(n, odd_n): global max_v, min_v if len(n) == 1: min_v = min(min_v, od..
구현문제이다. 일정이 이렇게 있다면 코팅지를 붙여야 하는 영역은 이 부분이다. 즉 겹치는 부분의 row최대와 col의 최대를 구하고 곱해준다음 결과값에 계속 더해준다. 우선 2차원 배열로 캘린더를 만들어줬다. 해당 col의 row를 먼저 확인하고 다 확인했으면 다음 col로 넘어간다. row의 최대값을 구한다. col은 날짜가 넘어갈때마다 1씩 더해준다. 해당 일에 일정이 있어야한다. row 값 2일 일때 : 1 3일 일때 : 1 4일 일때 : 2 5일 일때 : 3 6일 일때 : 3 7일 일때 : 2 8일 일때 : 2 9일 일때 : 2 10일에는 일정이 없다. 일정이 없을때는 이전까지 구한 row 와 col을 계산해준다. row x col = 3 x 8 = 24 11일 일때 : 1 12일 일때 : 2 r..
구현문제이다. 처음 구현한 방법은 2차원 배열을 사용하여 해당명령을 수행하고 명령을 다 수행했으면 2차원 배열들을 문자열로 바꿔 ( ex: [[1, 0, 0, 1], [0, 1, 1, 0]] -> [ '1001, '0110' ] ) 모든 기차들을 다 비교하였다. -> 시간초과 두번째 방법은 비트 연산을 사용하여 명령을 수행하였고 visited[False] 배열을 사용하여 중복 값을 체크하였다. import sys input = sys.stdin.readline n, m = map(int, input().split(' ')) trains = [0] * (n + 1) commands = [list(map(int, input().split(' '))) for _ in range(m)] visited = [Fa..
t = int(input()) def turn45(n, d, graph: list): n -= 1 count = abs(d) // 45 minus = False if d 가운데열 prev_temp = graph[i][(n + 1) // 2] graph[i][(n + 1) // 2] = prev_list[i] prev_list[i] = prev_temp for i in range(n + 1): ..
구현 문제이다. 오목을 승리한 돌과 오목을 형성한 돌들의 맨 왼쪽 돌을 출력하는 문제이다. 우선 첫행 ~ 마지막행 순으로 검사를 한다. 열은 왼쪽에서 오른쪽으로 검사한다. 가로 검사 1. 해당 좌표에서 오른쪽으로 4칸을 확인하며 같은 돌인지 확인 2. 오목을 형성했다면 다음 한칸에도 같은 돌이 아닌지 확인 3. 해당 좌표에서 이전 좌표(왼쪽 1칸)가 같은돌이 아닌지 확인 세로, 오른쪽 대각선 아래, 오른쪽 대각선 위도 똑같이 확인 풀긴 했는데 코드가 너무 더럽다... 다시 풀어보자 graph = [list(map(int, input().split(' '))) for _ in range(19)] def whoWin(x, y): color = graph[x][y] rowCnt = 0 nx, ny = None..
구현 문제이다. 문제의 그림처럼 그대로 풀었다. 여기서 겉의 사각형부터 맨 안쪽의 사각형까지 몇번 들어가야 하는지 고민했는데 제한 조건에 min(N, M) mod 2 = 0 이란 조건이 있었다. 즉 min(N, M)를 2로 나눈 값만큼 안으로 들어가면된다. 배열을 돌리는 방법은 바꿀 좌표를 계산하고 그 좌표의 값을 저장해놓고 이전 좌표의 값을 계산된 좌표의 값에 넣는 식으로 계산하였다. 이러한 순서로 계산하였다. 하나의 사각형을 다 돌렸으면 안쪽 사각형으로 들어간다. n, m, r = map(int, input().split(' ')) graph = [list(map(int, input().split(' '))) for _ in range(n)] for _ in range(r): for i in rang..
구현 문제이다. 한글 자음에 해당하는 영어는 왼손으로 누르고 한글 모음에 해당하는 영어는 오른손으로 누른다. 즉 현재 누를 글자의 좌표를 왼손으로 누를지 오른손으로 누를지 정한다. 만약 e이기 때문에 왼손으로 누른다면 e의 해당 좌표를 구하고 이전 글자의 좌표와 거리를 계산한다. 누른 시간 1초 + 거리를 계산하며 결과값을 구해간다. left, right = input().split() strings = list(input()) keyboard = ['qwertyuiop', 'asdfghjkl', 'zxcvbnm'] mo = 'yuiophjklbnm' xl, yl, xr, yr = None, None, None, None for i in range(len(keyboard)): if left in keyb..