일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- sql 기술면접
- spring oauth
- springboot
- 백준 15685
- 프로래머스
- 웹어플리케이션 서버
- with recursive
- java 기술면접
- 파이썬
- 백준 16235
- re.split
- 백준
- spring security
- spring cloud
- Spring
- 백준 17626
- Kotlin
- Coroutine
- 백준 19238
- 백준 16719
- JPA
- java
- 백준 17779
- 백준 16236
- 백준 파이썬
- JVM
- MSA
- Spring Boot
- 프로그래머스
- MySQL
- Today
- Total
목록알고리즘 (178)
시작이 반
구현 문제이다. 한글 자음에 해당하는 영어는 왼손으로 누르고 한글 모음에 해당하는 영어는 오른손으로 누른다. 즉 현재 누를 글자의 좌표를 왼손으로 누를지 오른손으로 누를지 정한다. 만약 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..
문자열, 사전을 활용한 문제 . 을 기준으로 문자를 나눠서 확장자를 key로 사전에 등록한다. 사전을 정렬한다. key를 기준으로 정렬하는 방법 dict = {'A' :1,'D' :4,'C' :3,'B' :2} sdict= sorted(dict.items()) # items() 함수는 key-value 쌍이 tuple로 구성된 리스트가 리턴됩니다. #>> [('A', 1), ('B', 2), ('C', 3), ('D', 4)] value를 기준으로 정렬하는 방법 dicts = {'A' :4,'D' :1,'C' :2,'B' :3} sdicts= sorted(dicts.items(), key=lambda x: x[1]) # items() 함수는 key-value 쌍이 tuple로 구성된 리스트가 리턴됩니다...
구현 문제이다. 남자일 경우 받은 숫자의 배수의 스위치를 반전시킨다. 여자일 경우 받은 숫자의 대칭되는 스위치를 반전시킨다. ex) 번호 1 2 3 4 5 6 7 8 스위치 0 1 0 1 1 1 1 0 일떄 받은 숫자가 6이라면 0 1 0 1 0 0 0 0 이된다. 구현은 쉽다. 하지만 출력 형식이 20개씩 잘라서 출력하는 것임을 명심하자! n = int(input()) switch = list(map(int, input().split(' '))) students = int(input()) receive_n = [tuple(map(int, input().split(' '))) for _ in range(students)] # 1: 남, 2: 여 for i in range(students): if rece..
구현문제이다. 열린 칸 주변에 지뢰가 몇개 있는지 확인(해당 위치에서 8방향) 하여 숫자를 출력한다. 만약 연린 칸에 지뢰가 있다면 모든 지뢰 또한 출력한다. 이중 반복문을 이용하여 구현하였다. dx, dy를 사용하여 좌표를 구하였음 n = int(input()) graph1 = list(input() for _ in range(n)) graph2 = list(input() for _ in range(n)) answer = [['.'] * n for _ in range(n)] dx = [-1, -1, -1, 0, 1, 1, 1, 0] dy = [-1, 0, 1, 1, 1, 0, -1, -1] def findBoom(): for i in range(n): for j in range(n): if graph1..
구현 문제이다. 사회자가 숫자를 부르면서 빙고판을 색칠해 가는데 빙고가 3개가 나오면 사회자가 몇번째에 빙고가 나왔는지 출력하는 문제이다. visited 리스트를 만들어서 사용하였다. 2차원배열의 전체에 해당하는 list row만 확인하는 list col만 확인하는 list 대각선을 확인하는 list list를 채우는 방식 만약 2차원 visited에서 0행이 빙고가 완성되면 row[0] 을 True로 바꿔준다. 열과 대각선도 마찬가지이다. 대신 대각선은 0, 1 로 이루어져있다. True의 개수를 3개 이상일때까지 row list, col list, 대각선 list를 확인한다. bingo = [list(map(int, input().split(' '))) for _ in range(5)] targets..
구현 문제이다. 울음소리를 보고 최소한의 오리가 몇마리인지 찾는다. 오리의 울음소리는 quack이다. q -> u -> a -> c -> k 를 순서대로 찾는다. ex) 울음소리가 quqacukqauackck 라면 quack를 순서대로 찾는다. quqacukqauackck 여기서 k 다음에 또 quack가 있다면 한마리의 오리가 연속으로 2번 소리를 낼 수 있다. (최소한의 오리 수를 찾아야 하기떄문에 중복가능) quqacukqauackck 즉 한 오리가 이렇게 소리를 낸다. 방문한 문자는 visited 리스트를 만들어 방문처리를 한다. 다음 오리는(파란색) quqacukqauackck 방문하지 않은 문자를 보고 quack를 찾는다. 녹음한 소리가 올바르지 않은 경우 - 문자열을 모두 방문을 하지 않았을..
소 리스트를 만들어 처음 관찰된 소들은 해당 위치를 저장한다. 처음 관찰된 소가 아니면 저장된 위치와 해당 위치를 비교하여 다르면 count를 증가시킨다. n = int(input()) cow = [-1] * 11 cnt = 0 for _ in range(n): target_cow, position = map(int, input().split(' ')) if cow[target_cow] == -1: cow[target_cow] = position else: if cow[target_cow] != position: cnt += 1 cow[target_cow] = position print(cnt)
구현 문제이다. 시작 좌표를 구한다. x = n / 2 y = n / 2 시작좌표에서 시작하여 상, 우, 하, 좌를 돌면서 1씩 더해간다. 이동 횟수는 정수(제곱근수) 만큼 이동한다. ex) 상 2 2의 제곱근 1.xxxx 위로 한칸까지 이동할 수 있다. 1칸 이동했으므로 오른쪽 확인 우 3 3의 제곱근 1.xxxx 오른쪽으로 한칸까지 이동할 수 있다. 1칸 이동했으므로 아래 확인 하 4 4의 제곱근 2 아래로 두칸까지 이동할 수 있다. 하 5 5의 제곱근 2 2칸 이동했으므로 왼쪽확인 ....... n = int(input()) target = int(input()) graph = list([0] * n for _ in range(n)) s_x, s_y = n // 2, n // 2 graph[s_x]..