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..
시험 준비 과정✅ 교재 - 중요한 부분을 우선으로나는 필기, 실기 모두 시나공에서 나온 교재로 공부했다.교재를 처음부터 끝까지 공부하지는 못했다. 목차에 단원별 중요도가 A, B, C, D로 적혀있기 때문에(https://www.yes24.com/Product/Viewer/Preview/123036227 필기 책 미리보기 참고, 실기 책도 마찬가지)필기 시험 준비할 때 A, B 단원을 최우선으로 읽었다.필기도 그렇지만 실기는 특히 시험 범위가 넓기 때문에 단원별 출제 비중 파악이 중요하다. ✅ 기출 - 매우 중요실기는 주관식이니까 문제에서 어떤 식으로 물어보는지, 개념을 어느 범위까지 알아야 하는지에 대한 감을 잡는 것도 중요하다. 그러니 아직 거의 다 모르는 문제이더라도 냅다 기출을 뽑아서 공부..
문제 설명 요약 주어진 두 문자열 X, Y는 정수로 이루어진 문자열이다. 둘을 비교하여 서로 짝을 이루는 숫자들을 모은다. 모은 숫자들로 가장 큰 수를 만들어 return한다. 짝을 이루는 숫자가 없다면 "-1"을 return한다. 0은 두개 이상 짝을 이뤄도 "0"을 return한다. https://school.programmers.co.kr/learn/courses/30/lessons/131128?language=python3내가 제출한 코드def solution(X, Y): from collections import Counter counter_x = Counter(X) counter_y = Counter(Y) common = [] for digit in c..
💯 기출해설 강의 23년 1회 1. 아래 자바 코드에서 출력되는 값을 작성하시오.class Static{ public int a = 20; static int b = 0; } public class Main{ public static void main(String[] args) { int a; a = 10; Static.b = a; Static st = new Static(); System.out.println(Static.b++); System.out.println(st.b); System.out.println(a); System.out.print(st.a);..
SQL (Structured Query Language) 데이터베이스에 정보를 저장하고 처리하기 위한 표준 언어.SQL 명령에는 DDL, DCL, DML이 있다.🔡 배경 지식, 용어 정리 ◼ 스키마 스키마는 DB의 구조와 제약 조건에 관한 전반적인 Specification(명세)를 기술한 것. 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다. DDL데이터 정의어 (Data Define Language)💡 DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어이다. 번역한 결과가 Data Dictionary라는 파일에 여러 개의 테이블로..
🔡 배경 지식, 용어 정리 ◼ ARP 호스트의 IP주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소(MAC Address)로 변환하는 기능을 한다. (Address Resolution Protocol) ◼ 키로거 공격 컴퓨터 사용자의 키보드 움직임을 탐지해 개인의 중요한 정보를 몰래 빼가는 해킹 공격(key logger attack) ◼ 백도어 시스템 설계자가 서비스 기술자나 유지 보수 프로그래머의 액세스 편의를 위해 시스템 보안을 제거하여 만들어 놓은 비밀 통로로, 컴퓨터 범죄에 악용되기도 함.(Back Door, Trap Door) 서비스 공격 유형DoS, DDoS 공격 관련Denial of Service. 표적이 되는 서버의 자원을 고갈시킬 목..
주제 : 소프트웨어 공학의 기초 - 생명 주기, 애자일, 요구사항출처 : 시나공 기본서 정보처리기사 실기 1권🔡 배경 지식, 용어 정리 ◼ backlog 📃 제품 개발에 필요한 요구사항을 모두 모아 우선순위를 부여해 놓은 목록 ◼ spike 요구사항의 신뢰성을 높이고 기술적 리스크를 감소시키기 위해 별도로 만드는 간단한 프로그램 Theme 1. 소프트웨어 생명 주기(Software Life Cycle)✅ 소프트웨어 Life Cycle 모형 1. 폭포수 모형 2. 프로토타입 모형 3. 나선형 모형 4. 애자일 모형 ✅ 애자일 모형 中 XP(eXtreme Programming) 💡 XP란? 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위..