1️⃣ Linked List (연결 리스트) 개요 💡 Linked List : 노드들이 링크에 의해 순차적으로 연결된 자료구조, 노드는 값을 저장하는 공간과 노드를 연결하는 링크로 구성됨.C언어의 정적 배열은 선언 시점에 크기를 지정해야 하고 이후 수정이 불가능하지만, 연결 리스트는 필요할 때마다 노드를 생성하여 추가할 수 있으며 최대 노드의 수를 미리 설정할 필요가 없다.사용할 공간의 규모를 미리 알고 있는 경우는 정적 배열을 사용해도 문제가 없지만 그렇지 않다면 연결 리스트를 사용하는 것이 좋다. 👉 연결 리스트의 종류▫️ 단일 연결 리스트 ( Singly linked list ) : 노드들이 한 방향으로만 연결된 구조▫️ 이중 연결 리스트 ( Doubly linked list ) : ..
📝 문제 요약🔗 https://www.acmicpc.net/problem/2167 N MN행 M열의 배열 (N줄로 주어짐)반복 횟수반복 횟수 만큼의 i, j, x, y 반복 횟수 만큼의 구간합📜 처음 낸 코드 - 시간 초과N, M = map(int, input().split())matrix = []for _ in range(N): temp = list(map(int, input().split())) matrix.append(temp)rep = int(input())for _ in range(rep): i, j, x, y = map(int, input().split())# print(sum(matrix[i-1:x][j-1:y])) answer = 0 for k in range(i-1, x): tm..
정보 출처 : p. 212 ~Dynamic Programming (DP) 개념1️⃣ DP 사용 조건DP는 1. 큰 문제를 작은 문제로 나눌 수 있고 2. 작은 문제에서 구한 정답이 그것을 포함하는 큰 문제에서도 동일할 때 사용할 수 있다. 이러한 조건을 만족하는 대표 문제는 피보나치 수열이다. 2️⃣ Memoization💡 메모이제이션이란? 이전에 계산된 결과를 일시적으로 기록해 놓는 것.DP를 구현할 때 쓰일 수 있다. 자세히 말하자면, 한번 구한 결과를 메모리 공간에 메모해두고 같은 식을 호출하면 메모한 결과를 그대로 가져오는 기법으로 쓰인다. 이는 값을 저장하는 방법이므로 캐싱(Caching)이라고 하기도 한다. ✅ 메모이제이션은 때에 따라서 리스트가 아닌 사전(dict) 자료형을 ..
DFS / BFS 구현 예제일반적인 경우 실제 수행 시간은 BFS가 DFS보다 좋은 편이다.DFSdef dfs(graph, v, visited): # 현재 노드를 방문 처리 visited[v] = True print(v, end=' ') # 노드의 탐색 순서 출력 # 현재 노드와 연결된 다른 노드를 재귀적으로 방문 for i in graph[v]: if not visited[i]: dfs(graph, i, visited) # 그래프를 2차원 인접 리스트 방식으로 표현함graph = [ [], [2, 3, 8], [1, 7], [1, 4, 5], [3, 5], [3, 4], [7], [2, 6, 8], [1, ..
이 글은 프로그래머스 Lv. 1 '체육복' 문제와「이것이 취업을 위한 코딩테스트다」 p. 92 '큰 수의 법칙' 문제에 대한 풀이 내용입니다.체육복실패 코드def solution(n, lost, reserve): # 여벌 체육복이 있는 학생이 도난당한 경우를 처리 for item in reserve: if item in lost: reserve.remove(item) lost.remove(item) count=0 for item in lost: if front(item, reserve) == True: reserve.remove(item-1) count += 1 ..
def solution(s): s=s.replace('{','') s=s.replace('}','') s=s.split(',') s=list(map(int, s)) small_s = set(s) answer = {} for i in range(len(small_s)): answer[i] = 0 for item in small_s: if s.count(item)-1 처음에 이렇게 적었으나 틀렸음
문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.https://school.programmers.co.kr/learn/courses/30/lessons/12934내가 쓴 코드def solution(n): import math X = math.sqrt(n) if X%1 == 0 : answer = (X+1)**2 else: answer = -1 return answer내 것과 유사한데 간결한 GPT의 코드def solution(n): sqrt = n ** 0.5 if ..
문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.예를 들어 a = 3, b = 5인 경우, 3+4+5 = 12이므로 12를 리턴합니다.https://school.programmers.co.kr/learn/courses/30/lessons/12912내가 제출한 코드def solution(a, b): answer=0 if a 💡 for문 돌려서 그냥 범위 안의 정수 더하기. 💬 다른 분들의 코드를 참고해보니 나도 다음엔 직접 더하기보다는 sum()을 활용해봐야겠다.다른 코드① a, b 바꿔 대입, sum(range())def solution(a, b): if a > b: a, b =..
문제 설명 요약 선생님이 출석부를 보고 출석을 부르시는데 이상하게 부르신다. 얼굴과 이름을 빨리 익히기 위해 학생들의 번호를 랜덤으로 부르고 얼굴과 이름이 잘 기억되지 않는 학생들은 번호를 여러 번 부르신다.출석 번호를 n번 무작위로 불렀을 때, 각 학생의 번호(1~23)가 불린 횟수를 각각 출력해보자.https://codeup.kr/problem.php?id=6092 [기초-리스트] 이상한 출석 번호 부르기1(설명)(py)python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용codeup.kr 내가 쓴 코드from collections import Coun..