백준 / 한 줄로 서기 / 1138번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 한 줄로 서기 / 1138번 (실버 2단계)문제 사이트: https://www.acmicpc.net/problem/1138 문제 설명 나의 풀이N = int(input())# 처음 아침에 줄 서는 사람들people = list(map(int, input().split()))# 결과 값result = [0] * N# 각 위치에 해당하는 인덱스 리스트를 만들어서# 조건에 맞는 위치를 찾기 위해 사용할 수 있음available_positions = list(range(N))# 사람의 번호는 1부터 N까지for number in range(1, N + 1): p = people[number - 1] result[available_positions[p]] =..
[AWS] EC2 서버 MySQL 설치 및 연결
·
소프트웨어 개발/AWS
https://newkimjiwon.tistory.com/162 AWS EC2 서버 만들기 및 접속하기(윈도우)Amazon EC2란https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/concepts.html Amazon EC2란 무엇인가요? - Amazon Elastic Compute Cloud이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄newkimjiwon.tistory.com여기서 EC2 서버를 만들고 접속하는 법을 배웠습니다!EC2 서버 MySQL 설치AWS EC2에서 Ubuntu 서버에 MySQL을 설치하는 방법을 안내해 드리겠습니다. 이 과정은 일반적인 MySQL 설치 절차에 따라 진행됩니다. 1. EC2 인스턴..
백준 / 연구소 / 14502번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 연구소 / 14502번 (골드 4단계)문제 사이트: https://www.acmicpc.net/problem/14502 문제 설명 나의 풀이from collections import dequedef bfs(): q = deque() vc = [row[:] for row in virus] for i in range(N): for j in range(M): if vc[i][j] == 2: q.append((i, j)) while q: y, x = q.popleft() for iy, ix in [(0, 1), (0, -1), (1, 0), (-1, 0)]: ..
백준 / 좋다 / 1253번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 좋다 / 1253번 (골드 4단계)문제 사이트: https://www.acmicpc.net/problem/1253 문제 설명 나의 풀이N = int(input())A = list(map(int, input().split()))A.sort()# 좋은 수를 셀 배열s = set()for i in range(0, len(A) - 1): for j in range(i + 1, len(A)): result = A[i] + A[j] if result 중복을 고려하지 못한 풀이 방법이다. 그래서 틀렸다.N = int(input())A = list(map(int, input().split()))A.sort()# 개수를 셀 변수cnt = 0for..
[알고리즘] 투 포인터(Two Pointer)
·
컴퓨터 과학/알고리즘
투 포인터 기법은 배열이나 리스트를 탐색하는 데 매우 효율적인 알고리즘 기법입니다. 두 개의 포인터를 사용하여 문제를 해결하는 이 기법은 주로 정렬된 데이터에서 특정 조건을 만족하는 쌍을 찾는 데 유용합니다. 이 기법은 많은 경우에 O(N) 또는 O(N^2)의 시간 복잡도를 가지며, 최적화된 솔루션을 제공합니다. 투 포인터(Two Pointer) 기본 개념투 포인터 기법은 다음 두 가지 주요 방식으로 사용됩니다:양 끝에서 시작하기적용 예: 정렬된 배열에서 두 수의 합이 목표 값과 일치하는 쌍을 찾는 문제방법: 배열의 시작과 끝에 각각 포인터를 두고, 두 포인터가 가리키는 값의 합을 계산합니다. 합이 목표 값과 같으면 쌍을 찾은 것이고, 그렇지 않으면 포인터를 조정합니다.같은 방향으로 이동하기적용 예: 특..
백준 / 가장 긴 증가하는 부분 수열 4 / 14002번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 가장 긴 증가하는 부분 수열 4 / 14002번 (골드 4단계)문제 사이트: https://www.acmicpc.net/problem/14002 문제 설명 나의 풀이n = int(input())data = list(map(int, input().split()))dp = [1] * (n + 1)for i in range(len(data)): for j in range(i): if data[j] ※ 알아야 할 것https://www.acmicpc.net/problem/12015 이 문제랑 다르다.이 풀이는 1번째 코드에서 수열이 증가하면 증가하는 길이만큼 출력한다.그리고 그 최대 증가하는 수들은 x 값을 가지고 있을 테니깐 뒤에서부터 x 값과 같..
백준 / 회의실 배정 / 1931번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 회의실 배정 / 1931번 (실버 1단계)문제 사이트: https://www.acmicpc.net/problem/1931 문제 설명 나의 풀이def solution(m): count = 0 # end는 현재 회의 끝나는 시간 end = -1 # s는 다음 회의 시작, e는 다음 회의 끝 for s, e in m: if end 이 문제의 핵심은 회의 끝나는 시간을 오름차순(이게 우선적으로 와야함), 회의 시작하는 시간을 오름차순을 통해서 가장 많이 사용할 수 있는 회의 시간을 찾는 것이 중요하다. 하지만 위 풀이는 정답과 비슷하지만 반례가 발생한다. 회의 끝나는 시간을 오름차순을 했지만 회의 시작하는 시간을 오름차순을 하지..
백준 / 그룹 단어 체커 / 1316번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 그룹 단어 체커 / 1316번 (실버 5단계)문제 사이트: https://www.acmicpc.net/problem/1316 문제 설명 나의 풀이def solution(s): stack = [] alpha = {chr(i + 96) : 0 for i in range(1, 27)} for word in s: if not stack: stack.append(word) continue if stack[-1] == word: continue elif stack[-1] != word: stack.append(word) for ..
[알고리즘] 이분 탐색(Binary Search)
·
컴퓨터 과학/알고리즘
이분 탐색(Binary Search)은 정렬된 배열에서 특정 값을 빠르게 찾기 위한 효율적인 알고리즘입니다. 이 알고리즘은 배열을 반복적으로 반으로 나누면서 원하는 값을 찾는 방식으로 동작하며, 시간 복잡도가 O(logn)입니다. 이는 선형 탐색(Linear Search)의 O(n)과 비교할 때 훨씬 더 효율적입니다. 이분 탐색 알고리즘의 동작 원리시작과 끝 설정: 배열의 시작점(low)과 끝점(high)을 설정합니다.중간점 계산: 시작점과 끝점의 중간 인덱스(mid)를 계산합니다.중간값 비교: 배열의 중간 값(arr[mid])과 찾고자 하는 값(target)을 비교합니다.만약 arr[mid]가 target과 같으면, 해당 인덱스를 반환합니다.만약 arr[mid]가 target보다 크면, target은 ..
피사노 주기(Pisano Period)
·
컴퓨터 과학/수학
피사노 주기란 피보나치 수열을 어떤 수 m으로 나눈 나머지들의 수열이 반복되는 주기를 말합니다. 피보나치 수열의 각 항을 m으로 나눈 나머지들을 구하다 보면, 이 나머지들이 주기적으로 반복되는 패턴을 갖게 됩니다. 이 패턴이 반복되기 시작하는 주기의 길이를 피사노 주기라고 합니다. 예시예를 들어, 피보나치 수열을 3으로 나눈 나머지의 피사노 주기를 살펴보겠습니다:피보나치 수열: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...피보나치 수열을 3으로 나눈 나머지: 0, 1, 1, 2, 0, 2, 2, 1, 0, 1, 1, ...여기서 나머지의 수열을 보면 0, 1, 1, 2, 0, 2, 2, 1 이후부터 다시 0, 1, 1, 2, 0, 2, 2, 1이 반복되기 시작합니다. 이 주기는..
백준 / 최솟값 찾기 / 11003번 / Python(PyPy3 제출)
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 최솟값 찾기 / 11003번 (플래티넘 5단계)문제 사이트: https://www.acmicpc.net/problem/11003 문제 설명 나의 풀이import heapqfrom collections import dequedef solution(lis, l): # 결과 result = [] # L를 계산할 deque() q = deque() for number in lis: q.append(number) if len(q) == l + 1: q.popleft() # 최소 값을 구할 힙 heap = list(q) heapq.heapif..
백준 / 토마토 / 7576번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 토마토 / 7576번 (골드 5단계)문제 사이트: https://www.acmicpc.net/problem/7576 문제 설명 나의 풀이from collections import dequedef solution(B): m = len(B[0]) n = len(B) move = [(0, 1), (0, -1), (1, 0), (-1, 0)] queue = deque() # 먼저 익은 토마토를 모두 큐에 넣어준다. for y in range(n): for x in range(m): if B[y][x] == 1: queue.append((y, x, 0)) # (y, x, 시간)..
김치바보
'분류 전체보기' 카테고리의 글 목록 (9 Page)