일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 개인프로필스튜디오창업
- SQL
- python
- 채널계
- 맥북환경설정
- oracleapex
- it자격증
- jdk
- 학점은행제무료강의
- 계정계
- 프로그래머스
- 맥북셋팅
- MSA
- 학점은행제
- 모놀리식
- 오라클
- union
- fastapi
- 렌탈스튜디오창업
- Homebrew
- 은행IT
- 코어뱅킹
- Pass By Value
- 컴퓨터공학학사취득
- 인강빨리듣기
- 디렉토리계층구조
- jdk17
- 맥북
- 코딩테스트
- DB
- Today
- Total
목록알고리즘 (43)
개발머해니
문제https://www.acmicpc.net/problem/2606 풀이 (bfs)from collections import deque# 1. 입력받기n=int(input()) # 컴퓨터 개수v=int(input()) # 연결선 개수graph = [[] for i in range(n+1)] # 그래프 초기화for i in range(v): # 그래프 생성 a,b=map(int,input().split()) graph[a]+=[b] # a에 b 연결 graph[b]+=[a] # b에 a 연결 -> 양방향 #print(graph)# 2. 노드 탐색 (bfs / 큐)visited = [0] * (n+1) # 방문 여부 체크visited[1]=1 # 1번 컴퓨터부터 시작이니 방문 표시Q..
문제https://school.programmers.co.kr/learn/courses/30/lessons/181832 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이[개요]1. 오른쪽으로 돌다가 끝에 다다르면 아래쪽으로 방향 바꾸기2. 아래쪽으로 돌다가 끝에 다다르면 왼쪽으로 방향 바꾸기3. 왼쪽으로 돌다가 끝에 다다르면 위쪽으로 방향 바꾸기 [이슈]끝을 어떻게 판단할 수 있을까?1. 다음 좌표의 값이 0이 아니어야 함2. 다음 좌표가 0보다 작거나, n보다 크거나 같으면 끝임 [파이썬문법]1. 리스트 0으로 초기화 : answer = [[0 for ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/120956 정답 def solution(babbling): answer = 0 arr = ["aya", "ye", "woo", "ma" ] for x in babbling: for y in arr: x = x.replace(y, ' ') if x.strip() == "": answer += 1 break; return answer 풀이 같은 문자열을 찾으면 ""이 아니라 " "로 replace한다! 케이스) "wyeoo" x.replace(y, "") : "wyeoo" ➡️ "woo" ➡️ "" x.replace(y, " ") : "wyeoo" ➡️ "w oo" ➡️ "w oo"
문제 https://school.programmers.co.kr/learn/courses/30/lessons/43165문제유형 : BFS, DFSBFS 풀이법def solution(numbers, target): answer = bfs(numbers, target) return answerdef bfs(numbers, target): answer = 0 sums = [0] for num in numbers: tmp = [] for s in sums: tmp.append(s + num) tmp.append(s - num) sums = tmp for s in sums: ..
from collections import deque def parentheses_checker(string): """주어진 문자열 인풋의 모든 괄호가 짝이 있는지 확인해주는 메소드""" stack = deque() # 사용할 스택 정의 print(f"테스트하는 문자열: {string}") # 문자열의 각 문자를 돌면서 for i in range(len(string)): # 열리는 괄호가 있는 위치를 스택에 저장한다 if string[i] == "(": stack.append(i) # 닫히는 괄호가 있으면 elif string[i] == ")": # 스택에 열린 괄호 위치 데이터가 있으면 삭제하고 if stack: stack.pop() # 아니면 현재 위치에 있는 닫는 괄호에 맞는 열리는 괄호가 없다고 ..
실습 설명 런던에 엄청난 폭우가 쏟아진다고 가정합시다. 정말 재난 영화에서나 나올 법한 양의 비가 내려서, 고층 건물이 비에 잠길 정도입니다. 그렇게 되었을 때, 건물과 건물 사이에 얼마큼의 빗물이 담길 수 있는지 알고 싶은데요. 그것을 계산해 주는 함수 trapping_rain()을 작성해 보려고 합니다. 함수 trapping_rain()은 건물 높이 정보를 보관하는 리스트 buildings를 파라미터로 받고, 담기는 빗물의 총량을 리턴해 줍니다. 예를 들어서 파라미터 buildings로 [3, 0, 0, 2, 0, 4]가 들어왔다고 합시다. 그러면 0번 인덱스에 높이 3의 건물이, 3번 인덱스에 높이 2의 건물이, 5번 인덱스에 높이 4의 건물이 있다는 뜻입니다. 1번, 2번, 4번 인덱스에는 건물이..
실습 설명 [1, 2, 5, 6, 7, 9, 11] 안에 합이 15가 되는 두 요소의 조합이 있는지 확인하고 싶습니다. 두 요소 6과 9의 합이 15가 되죠? 이 조합이 있는지 없는지를 알고 싶은 거죠. 함수 설명 함수 sum_in_list()는 정수 search_sum과 정렬된 정수 리스트 sorted_list를 받아서 sorted_list안의 두 요소의 합이search_sum이 되는 조합이 있는지 없는지를 불린으로 리턴합니다. sum_in_list(15, [1, 2, 5, 6, 7, 9, 11])은 불린 True를 리턴합니다. 실습 결과 def sum_in_list(search_sum, sorted_list): low = 0 high = len(sorted_list) - 1 while low < hi..
실습 설명 (N + 1)의 크기인 리스트에, 1부터 N까지의 임의의 자연수가 요소로 할당되어 있습니다. 그렇다면 어떤 수는 꼭 한 번은 반복되겠지요. 예를 들어 [1, 3, 4, 2, 5, 4]와 같은 리스트 있을 수도 있고, [1, 1, 1, 6, 2, 2, 3]과 같은 리스트가 있을 수도 있습니다. (몇 개의 수가 여러 번 중복되어 있을 수도 있습니다.) 이러한 리스트에서 반복되는 요소를 찾아내려고 합니다. 중복되는 어떠한 수 ‘하나’만 찾아내도 됩니다. 즉 [1, 1, 1, 6, 2, 2, 3]의 예시에서 1, 2를 모두 리턴하지 않고, 1 또는 2 하나만 리턴하게 하면 됩니다. 이번 과제에서는 두 가지의 제약이 있습니다. O(n)이상의 공간을 사용할 수 없습니다. 즉 사전이나 리스트와 같이 인풋 ..
실습 설명 영훈이는 출근할 때 계단을 통해 사무실로 가는데요. 급할 때는 두 계단씩 올라가고 여유 있을 때는 한 계단씩 올라갑니다. 결국 계단을 오를 수 있는 모든 방법으로 계단을 올라갔는데요. 이제 다르게 계단을 올라갈 수는 없을까 고민하던 영훈이는 특이한 방법으로 계단을 오르려고 합니다. 가령 계단을 한 번에 1, 2, 4 칸씩 올라가 보는 건데요. 예를 들어서 계단을 4개를 올라가야 되면: 1, 1, 1, 1 2, 1, 1 1, 2, 1 1, 1, 2 2, 2 4 총 6개 방법이 있네요. 함수 설명 함수 staircase()는 파라미터로 총 계단 수 n 그리고 한 번에 올라갈 수 있는 계단 수를 possible_steps로 받고, 올라갈 수 있는 방법의 수를 효율적으로 찾아서 리턴합니다. 그러니까 ..
실습 설명 영훈이는 출근할 때 계단을 통해 사무실로 가는데요. 급할 때는 두 계단씩 올라가고 여유 있을 때는 한 계단씩 올라 갑니다. 어느 날 문득, 호기심이 생겼습니다. 한 계단 또는 두 계단씩 올라가서 끝까지 올라가는 방법은 총 몇 가지가 있을까요? 계단 4개를 올라간다고 가정하면, 이런 방법들이 있습니다. 1, 1, 1, 1 2, 1, 1 1, 2, 1 1, 1, 2 2, 2 총 5개 방법이 있네요. 함수 staircase()는 파라미터로 계단 수 n을 받고, 올라갈 수 있는 방법의 수를 효율적으로 찾아서 리턴합니다. print(staircase(0)) # => 1 print(staircase(1)) # => 1 print(staircase(4)) # => 5 실습 결과 def staircase(n..