일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리스트 컴프리헨션
- 파이썬
- 백준 2852
- SAA-C02
- 깃허브
- react
- 데이터베이스
- ROWNUM
- 정규화
- AWS
- github
- sql
- 프로그래머스 조건에 맞는 개발자 찾기
- 백준 11059
- 백준 크리문자열
- 알고리즘
- SQLD
- 백준 24499 파이썬
- 백준 1756
- join
- Today
- Total
목록전체 글 (109)
-
문제https://www.acmicpc.net/problem/24499 풀이1. 이 문제는 선형이 아니라 원형 큐의 형태이므로 입력받은 배열을 뒤에 하나 더 붙여서 풀면 편하다.2. 배열의 처음부터 끝까지 누적합을 visited 배열에 저장한다.3. visited 배열을 돌며 인덱스의 차이가 k인 수들의 차이의 최대값을 구한다. 코드n, k = map(int, input().split())arr = list(map(int, input().split()))arr.extend(arr)ans = 0visited = [0] * 200002for i in range(1, n*2 + 1): visited[i] = visited[i-1] + arr[i-1]for i in range(k, n*2 + 1):..
문제https://www.acmicpc.net/problem/11059 풀이1. 문자열을 정수 배열로 변환한다.2. 해당 배열의 누적 합을 새로운 배열에 추가한다.3. 모든 짝수 길이의 부분 문자열을 탐색하며 절반의 합을 계산한다.4. 만약 절반의 합이 서로 일치한다면 해당 문자열을 길이를 저장한다. 코드def find(s): n = len(s) ans = 0 # 문자열을 정수 배열로 변환 arr = [int(char) for char in s] # 누적 합 계산 prefix_sum = [0] * (n + 1) for i in range(1, n + 1): prefix_sum[i] = prefix_sum[i - 1] + arr[i ..
문제 https://www.acmicpc.net/problem/1756 1756번: 피자 굽기 첫째 줄에 오븐의 깊이 D와 피자 반죽의 개수 N이 공백을 사이에 두고 주어진다. (1 ≤ D, N ≤ 300,000) 둘째 줄에는 오븐의 최상단부터 시작하여 깊이에 따른 오븐의 지름이 차례대로 주어진다. 셋 www.acmicpc.net 풀이 방법 오븐이 현재 5 6 4 3 6 2 3 처럼 되어있으므로 어차피 지름이 3인 반죽은 맨 밑바닥까지 가지 못하고 그 위에 지름이 2인 오븐에서 막힌다. 따라서 이를 비교하기 쉽도록 바꿔줘야한다. 5 6 4 3 6 2 3 → 5 5 4 3 3 2 2 로 바꿔주는 작업이 필요하다. 그 후에는 가장 밑바닥 오븐부터 차례대로 올라오며 피자 반죽의 지름과 비교한다. 코드 d, n..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/276034 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 SKILL_CODE 가 Python 이나 C#을 나타내는 비트를 포함하는 개발자를 찾아야한다. 즉, 해당 기술을 나타내는 비트가 1로 설정되어있는지 확인해야하므로, 비트를 비교하는 연산을 해야한다. '&' 연산자를 사용하면, 10진수 숫자들은 자동으로 2진수로 변환된 후 비트별로 AND 연산이 수행된다. 따라서 SKILL_CODE와 'Python' 에 해당하는 2진수 비트를 비교..
문제 https://www.acmicpc.net/problem/2852 2852번: NBA 농구 첫째 줄에 골이 들어간 횟수 N(1 0: one = one - (48*60 - (60*m+s)) print('{:0>2}:{:0>2}'.format(one//60,one%60)) print('{:0>2}:{:0>2}'.format(two//60,two%60))
문제 https://www.acmicpc.net/problem/16173 16173번: 점프왕 쩰리 (Small) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net 풀이 방법 시작 지점인 (0, 0)부터 시작하여 dfs로 돌면서 방문한 곳은 visited 배열에서 1로 바꿔준다. 좌표가 맵 밖을 벗어나거나 이미 방문한 곳은 return으로 빠져나온다. 도착 지점에 도착했으면 (= visited 배열에서 도착 지점에 해당하는 곳이 1이면) 성공한 것으로 간주한다. 코드 n = int(input()) board = [list(map(int, input().sp..
문제 https://www.acmicpc.net/problem/2116 2116번: 주사위 쌓기 첫줄에는 주사위의 개수가 입력된다. 그 다음 줄부터는 한 줄에 하나씩 주사위의 종류가 1번 주사위부터 주사위 번호 순서대로 입력된다. 주사위의 종류는 각 면에 적혀진 숫자가 그림1에 있는 www.acmicpc.net 풀이 방법 주사위의 개수와 주사위 정보를 입력받는다. 가장 밑에 오는 주사위에서 밑면을 무엇으로 해야 최대가 되는지 계산하기 위해 for 문을 1 - 6까지 돈다. 밑에 있는 주사위의 윗면과, 위에 있는 주사위의 밑면이 일치해야하기 때문에 그 수를 맞춘 상태에서 옆면이 최대가 되는 숫자를 더해준다. for 문이 끝날 때마다 최대가 되는 옆면의 합을 갱신한다. 코드 n = int(input()) d..
문제 https://www.acmicpc.net/problem/16922 16922번: 로마 숫자 만들기 2, 6, 10, 11, 15, 20, 51, 55, 60, 100을 만들 수 있다. www.acmicpc.net 풀이 방법 로마숫자를 더해서 나오는 수에 해당하는 인덱스 (예를 들어 로마숫자 IX → 11) 에 1을 더해준다. 나중에 로마숫자로 만들 수 있는 숫자의 총 개수를 sum 함수로 쉽게 세기 위함이다. 재귀함수를 사용해서 숫자를 반복적으로 더해준다. 코드 n = int(input()) roma = [1, 5, 10, 50] arr = [0] * 1001 num = 0 def dfs(cur, start): global num if cur == n: arr[num] = 1 return for ..