전체 글 111

[크래프톤 정글] 리스트 와 문자열

파이썬의 리스트(List)와 문자열(String)은 매우 자주 사용되는 기본 자료형이다. 둘 다 시퀀스 자료형으로, 인덱스를 통해 요소에 접근할 수 있으며, 슬라이싱(slicing)과 같은 다양한 연산을 사용 할수 있다.리스트(List)1. 리스트의 특징가변 길이(Mutable): 리스트는 생성 후에도 길이와 내용을 변경할 수 있다.다양한 데이터 타입: 리스트는 다양한 데이터 타입을 혼합하여 저장할 수 있다.시퀀스 타입: 리스트는 순서가 있는 자료형으로, 인덱스를 통해 요소에 접근할 수 있다.2. 리스트 생성리스트는 대괄호 []를 사용하여 생성하며, 요소는 쉼표 ,로 구분한다.my_list = [1, 2, 3, "hello", True]3. 리스트의 주요 기능인덱싱(Indexing): 리스트의 각 요소는..

[크래프톤 정글 ] 1주차 회고

정글에 들어 온지 1주일 이 되었다. 아니 이글을 쓰는 시점에선 2주일이 다되간다. 이번 주차 부터 는 알고리즘 에 들어갔다. 알고리즘 에는 학을 때는 나였기에 이번 주차 부터 심히 걱정이 되기 시작했다.진짜 정글의 시작이번 주차 에서는 최민규 , 김동현님과 함께 팀 을 이루어 진행하게 되었다.그리고 이번주 부터 코어타임 을 정해서 팀원들과 함께 학습하는 시간을 가지라고 하였다.우리는 코어타임을 어떻게 활용하면 좋을지 생각 하다가 내가 스터디 를 진행 해보면 어떨까 하고 제안을 했다.그래서 우리는 이번 주차 에 학습을 하여야 하는 알고리즘 개념 중 3개씩 담당하여 격일로 하루에 하나씩 발표하는 형식으로 진행하게 되었다.그렇게 내가 담당하게 된 개념은 재귀함수 , 해시테이블 , 연결리스트 를 내가 담당하게..

크래프톤 정글 2024.09.20

[크래프톤 정글] 0 주차 회고

크래프톤 정글 에 들어오기 전 까지작년 11월 우테코 에 떨어진 이후 , 2024년에 는 어떻게 하지 라는 생각을 가지고 그냥 저냥 살던중4월즈음 지인을 통해서 크래프톤 정글 을 알게 되었다 . 사실 250만원 이라는 참여 비용과 , 5개월 합숙 이라는 조건 때문에 고민이 많이 들었다. 그러나 그 당시에는 뭐라도 해야한다고 생각했기에 지원서를 일단 넣고 일본 에서 귀국한 다음날 부터 입과 시험 준비 를 했다. 입과 시험은 처음 써보는 flask, html, css 만을 가지고 구현 해야해서 프론트 부분에서 조금 애를 먹었지만 주어진 시간 1시간을 남겨두고 무사히 마무리 했다.그리고 2주일 뒤쯤 면접을 보았던거 같다. 면접에서는 비교적 쉬운 개인 적인 질문 들이 나왔다.간단 자기소개원래 하드웨어 를 했었는..

크래프톤 정글 2024.09.19

[크래프톤 정글] 백준 9663번 N_queen 문제

N-Queens 문제 개요N-Queens 문제는 N x N 크기의 체스판에 N개의 퀸을 서로 공격할 수 없도록 배치하는 문제다. 퀸은 체스에서 가로, 세로, 대각선으로 공격할 수 있기 때문에, 서로 공격하지 않도록 배치하는 것이 핵심이다. 가능한 모든 배치 방법을 찾고, 그 개수를 계산하는 것이 목표다.백트래킹 알고리즘 개요백트래킹은 가능한 모든 경우를 탐색하면서, 조건에 맞지 않는 경우를 미리 포기하고 돌아가서 다른 경로를 시도하는 탐색 방법이다. 이 방식은 불필요한 탐색을 줄여주기 때문에 효율적이다.백트래킹을 사용한 N-Queens 문제 해결 방법처음 행(row = 0)부터 시작:탐색은 첫 번째 행(row = 0)부터 시작하여, 가능한 모든 열(col)에 퀸을 배치하는 시도를 한다.예를 들어, (0,..

[크래프톤 정글] 컴퓨터 시스템 13p - 메모리 계층 구조

메모리 계층 구조의 정의메모리 계층 구조는 컴퓨터 시스템에서 메모리의 성능, 용량, 비용 간의 균형을 맞추기 위해 계층적으로 배열된 메모리 장치들의 구조를 의미한다. 일반적으로, 계층이 높을수록 접근 속도는 빠르지만 용량은 작고 비용은 비싸다. 반대로, 계층이 낮을수록 접근 속도는 느리지만 용량은 크고 비용은 저렴하다.메모리 계층 구조의 단계별 구성레지스터(Registers)위치: CPU 내부속도: 매우 빠름 (CPU 클록 속도와 동일)용량: 매우 작음 (몇십 바이트에서 수백 바이트)특징:CPU가 가장 빠르게 접근할 수 있는 메모리.연산을 위해 임시 데이터를 저장하는 용도로 사용된다.레지스터는 일반적으로 산술 연산, 주소 계산, 명령어 실행 등 CPU의 기본 연산에서 사용된다.캐시 메모리(Cache Me..

[크래프톤 정글] 컴퓨터 시스템 ~ 1장

이 포스트의 내용은 '컴퓨터 시스템 A Programmer's Perspective' 도서의 내용을 기반으로 합니다.1장: 컴퓨터 시스템 개요1.1 컴퓨터 시스템의 기본 개념컴퓨터 시스템은 하드웨어와 소프트웨어로 구성된다. 이 둘은 서로 밀접하게 연결되어 있으며, 프로그램이 하드웨어 상에서 어떻게 동작하는지를 이해하는 것이 중요하다.하드웨어 구성 요소: 프로세서(CPU), 메모리, I/O 장치 등이 있다. 프로세서는 프로그램의 명령어를 실행하고, 메모리는 데이터를 저장하며, I/O 장치는 외부 세계와의 인터페이스를 제공한다.1.2 프로그램의 실행프로그램이 실행되는 과정:소스 코드 작성: 프로그래머가 고급 언어(C, Java 등)로 작성한 소스 코드.컴파일: 컴파일러가 소스 코드를 어셈블리 언어로 변환하고..

[크래프톤 정글] 백준 1914번 하노이의 탑

오늘은 1914번 하노이의 탑 문제의 풀이에 대해 정리해 보려 한다. 문제를 보자하노이의 탑 문제 접근법 정리하노이의 탑 문제는 주어진 규칙에 따라 원반들을 다른 기둥으로 옮기는 문제다. 이 문제는 주로 재귀적 접근법을 사용하여 해결할 수 있다. 목표는 최소한의 이동 횟수로 모든 원반을 목적지 기둥으로 옮기는 것이다.1. 문제 설명하노이의 탑 문제는 세 개의 기둥(A, B, C)과 크기가 다른 ( N )개의 원반이 있는 상황을 가정한다. 모든 원반은 처음에 첫 번째 기둥(A)에 쌓여 있고, 크기가 큰 원반이 아래에 위치하며 크기가 작은 원반이 위에 위치한다. 목표는 다음 두 가지 규칙을 준수하며 첫 번째 기둥(A)에서 세 번째 기둥(C)로 모든 원반을 옮기는 것이다.한 번에 한 개의 원반만 옮길 수 있다..

[크래프톤 정글 ] 백준 1182 번

정글에 입소한지 0주차 가지나고 1주차에 접어들어 알고리즘 시험을 보게 되었다 .시간은 1시간 30분 상,중,하 하나씩 총 3문제 가 출제 되었는데 , 결과는 처참했다. 하 문제 하나 겨우 풀었지만 그마저도 시간초과 ...ㅋㅋㅋ;;;;그 비참한 결과를 다음주에는 반복하지 않고자 1주차 문제를 하나씩 풀어보려고 한다.접근 방식이 문제는 탐색을 사용하여 푸는 문제이기 때문에 접근 할수 있는 방법은 다양하다 대표적으로 다음과 같은 방법들을 이용하여 접근해 볼수 있을거같다1. 재귀와 백트래킹 (Brute-force 방법)이 방법은 모든 가능한 부분수열을 재귀적으로 탐색하여 부분수열의 합이 ( S )와 일치하는 경우의 수를 세는 방식이다.설명: 모든 원소를 포함하거나 포함하지 않는 두 가지 선택을 재귀적으로 진행..

[크래프톤 정글] 연결 리스트

연결 리스트(Linked List)는 데이터를 노드(Node)라는 단위로 저장하며, 각 노드는 다음 노드를 가리키는 포인터를 포함하는 선형 자료 구조다. 연결 리스트는 데이터를 물리적으로 연속된 공간에 저장하지 않고, 메모리의 동적 할당을 통해 데이터 요소들이 필요할 때마다 새로운 공간을 할당받아 저장한다. 이 때문에 데이터 요소의 추가와 삭제가 비교적 자유로운 특징이 있다.파이썬의 참조와 C 언어의 포인터의 차이파이썬의 참조(Reference): 파이썬에서는 변수들이 실제 객체에 대한 참조를 저장한다. 이는 메모리 주소를 직접적으로 다루지 않기 때문에 메모리 관리가 자동으로 이루어지며, 개발자는 객체의 참조만을 다룬다. 예를 들어, 리스트의 노드가 다른 노드를 가리킬 때 그 노드는 단순히 다른 객체를 ..

[크래프톤 정글] 정렬 알고리즘 1탄

정렬 알고리즘 의 종류1 . 버블 정렬버블 정렬(Bubble Sort)은 매우 간단한 정렬 알고리즘 중 하나로, 인접한 두 요소를 비교하여 필요에 따라 자리를 교환하면서 정렬하는 방식이다. 최악의 경우 시간 복잡도는 \(O(n^2)\)이며, 이는 작은 데이터셋에서는 적절할 수 있지만, 큰 데이터셋에서는 비효율적이다.버블 정렬 알고리즘 동작 원리리스트의 첫 번째 요소부터 시작하여 인접한 두 요소를 비교한다.두 요소가 올바른 순서(오름차순 또는 내림차순)에 있지 않으면 서로 위치를 교환한다.리스트의 끝까지 이 과정을 반복한다.첫 번째 반복이 끝나면 가장 큰 값이 리스트의 마지막 위치에 있게 된다.이 과정을 남은 요소들에 대해서 반복하여 모든 요소가 정렬될 때까지 계속한다.버블 정렬의 구현 (Python 코드..