본문 바로가기

전체 글

(207)
비트 연산자 비트 연산자란?비트 연산은 데이터를 이진수(0과 1)의 비트 단위로 직접 조작하는 연산컴퓨터 내부의 데이터는 비트로 저장되므로 연산 속도가 빠름비트 연산자의 종류AND 연산: & 기호로 표기, 두 비트가 모두 1일 때 1, 나머지는 0OR 연산: | 기호로 표기, 두 비트 중 하나라도 1일때 1, 나머지는 0XOR 연산: ^ 기호로 표기, 두 비트가 다르면 1, 같으면 0NOT 연산: ~ 기호로 표기, 비트를 0은 1로, 1은 0으로 반전왼쪽 시프트: 오른쪽 시프트: >> 기호로 표기, 비트들을 오른쪽으로 이동하고 왼쪽은 0으로 채움(음수의 경우 1로 채움)비트 연산자의 특징CPU에서 직접 지원하는 연산으로 연산 속도가 빠름하나의 정수로 여러 개의 Boolean데이터를 저장할 수 있으므로 메모리 사용이 ..
깊이 우선 탐색/너비 우선 탐색 깊이 우선 탐색과 너비 우선 탐색이란?트리, 그래프를 탐색하는 두 가지의 알고리즘.쉽게 설명하자면 미로 찾기. S / \ A B / \ \ C D E \ \ F(출구) GS에서 시작해서 F에서 탈출하는 미로가 있다고 할 때 (단, 낮은 순번부터 탐색한다고 가정)DFS: S - A - C - D - F(출구)C에서 이동할 곳이 없으므로 다시 A로 복귀BFS: S - A - B - C - D - E - F(출구)A, B를 탐색 후 다음 단계 탐색C, D, E를 탐색 후 다음 단계 탐색깊이 우선 탐색(Depth-First Search/DFS)현재 위치에서 가장 깊은 곳 까지 탐색한 뒤..
재귀 함수 재귀 함수란?함수가 자기 자신을 호출하는 프로그래밍 기법, 복잡한 연산을 동일한 형태의 작은 부분으로 나누어서 해결하는 방법이다.재귀 함수는 가장 최근에 호출한 함수부터 연산을 하는 스택(Stack) 구조를 가진다.재귀 사례(Recursive Case)를 기준으로 문제를 세분화하고 기저 사례(Base Case)를 종료 조건으로 한다.재귀 사례: 재귀 함수에서 자기 자신을 호출하여 반복하는 부분기저 사례: 재귀 함수의 실행 중에 더 이상 쪼갤 수 없는 조건예시 문제 - 하노이의 탑하노이의 탑은 여러 크기의 원판을 큰 원판이 작은 원판의 위로 가지 않도록 하여 한 번에 한 개의 원판을 움직여서 다른 기둥으로 이동을 시키는 문제로 재귀 함수를 공부할 때 자주 사용하는 문제이다.문제 링크: https://www..
프로그래머스 - 배달 https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명 N개의 마을로 이루어진 나라가 있습니다. 이 나라의 각 마을에는 1부터 N까지의 번호가 각각 하나씩 부여되어 있습니다. 각 마을은 양방향으로 통행할 수 있는 도로로 연결되어 있는데, 서로 다른 마을 간에 이동할 때는 이 도로를 지나야 합니다. 도로를 지날 때 걸리는 시간은 도로별로 다릅니다. 현재 1번 마을에 있는 음식점에서 각 마을로 음식 배달을 하려고 합니다. 각 마을로부터 음식 주문을 받으려고 하는데, N개의 마을 중에서 K 시..
프로그래머스 - 무인도 여행 https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명 메리는 여름을 맞아 무인도로 여행을 가기 위해 지도를 보고 있습니다. 지도에는 바다와 무인도들에 대한 정보가 표시돼 있습니다. 지도는 1 x 1크기의 사각형들로 이루어진 직사각형 격자 형태이며, 격자의 각 칸에는 'X' 또는 1에서 9 사이의 자연수가 적혀있습니다. 지도의 'X'는 바다를 나타내며, 숫자는 무인도를 나타냅니다. 이때, 상, 하, 좌, 우로 연결되는 땅들은 하나의 무인도를 이룹니다. 지도의 각 칸에 적힌 숫자는 식량을..
내일배움캠프 AI트랙 수료 후기! 바로 어제(10/28) 길다면 길고 짧았다면 짧았던 4.5개월간의 부트캠프가 끝이 났다. 1개월의 사전캠프를 포함하면 5.5개월이니 약 반년간 진행되었다. 정규 공부 시간은 평일 아침 9시부터 저녁 9시까지 12시간이었지만 특별한 일이 없으면 정규시간 전, 후와 주말에도 공부를 했으므로 실질적으로는 그보다 더 많이 했다고 할 수 있을 것이다. 캠프 선택 계기는 지인의 추천이었다. 아는 분에게 앞으로의 진로에 대해 상의를하다가 개발자에 관심이 생겼고 그분에게 추천을 받아서 참가하게 되었다. 캠프를 하면서 가장 좋았던 점은 비전공자도 빠른 시간 내에 커리큘럼을 따라갈 수 있다는 점이다. (당연히 단순히 하라는것만 하는 것이 아니고 개인의 노력이 동반되어야겠지만 그건 당연한거니까...)내 경우에 대해서 설명해..
최종프로젝트 7일차 최종프로젝트가 본격적으로 시작된지 어느새 일주일이 지났다.내일까지는 프론트엔드의 기본 뼈대를 작성할 예정이며 아래는 오늘 공부한 내용에 대한 트러블슈팅이다. 상황: 프론트엔드에 특정 페이지와 연결되는 하이퍼링크를 추가하려고 함. 당연히 특정 요소의 고유한 번호가 필요했고 pk(id)를 사용하기로 결정하고 링크를 연결함.문제: 그러나 계속해서 null을 출력하는 오류가 발생했고 필요한 pk값을 찾을 수 없어서 링크를 작성하지 못함.원인: 프론트의 문제가 아니라 백엔드의 문제였음. 백엔드에서 직렬화를 할 때, serializer에서 id필드를 포함하고 있지 않았음.해결: 시리얼라이저를 수정하여 id필드를 포함하도록 함. 이전 serializerclass AverageGradeSerializer(seriali..
최종프로젝트 6일차 오늘은 주말간 연습했던 엑시오스를 프로젝트에 적용하여 프론트를 구현하려했고 그에 따른 시행착오가 있었다. 아래는 시행착오에 대한 트러블슈팅이다. 상황: 프론트엔드 테스트를 위해 axios를 프로젝트에 도입하려함. 이 과정에서 CDN과 번들링 중 선택해야하는 상황, CDN보다 번들링이 안정적일 것이라고 생각하여 번들링을 선택. 문제: Node.js를 설치하고 parcel을 선택하여 프론트엔드 작업을 진행 이 과정에서 시간이 오래 소요되었고 drf에 집중하자는 프로젝트 초기의 계획에서 멀어지게 됨. 해결: 회의 결과 drf를 더 명확하게 다루고 추가기능을 더 많이 구현하는 것이 더 중요하다고 생각했고 번들링이 아니라 CDN을 사용하기로 결정함. 느낀점: 프론트엔드도 완벽하게 구현한다면 당연히 좋겠지만 프로젝..