일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- deque
- 마크다운
- github
- 브루트포스
- Python
- 구현
- 분할정복
- 프로세스
- 이진탐색
- 정수론
- 그래프 탐색
- 면접복기
- Markdown
- BFS
- 적정 스레드
- DP
- 회고
- springboot
- 빌더패턴
- g1gc
- 백준
- 몬티홀
- Stack
- Greedy
- GC
- GarbageCollector
- 그래프탐색
- 문제풀이
- 배열 돌리기1
- 그리디
- Today
- Total
목록전체 글 (68)
FeelingXD
웹을 통해 검색하면 어떤일이 일어날까? 면접 단골질문 중 하나인 웹에 검색하면 컴퓨터 내부에서 일어나는 일들에 대해서 인프라 관점으로 작성하는 글입니다. 🤔 www.naver.com 을 입력하면 .. 도메인 주소를이용해서 접속하려는 ip 를 얻는 방법 우선 사용자가 웹브라우저 를 통해 주소창에 www.naver.com 을 검색한다. 기본적 으로 통신을 하려면 통신 하고자하는 주소의 ip주소를 알아야한다. 위에 언급한 사용자가 www.naver.com 은 주소 로 통신하기전에 주소를 ip로 변환하는 과정을 거쳐야한다. 그럼 주소를 ip 로 변환하는 과정은 어떻게 일어날까? 우선 호스트의 hosts 파일을 참고 한다. 만약 검색 하려는 주소가 hosts 파일에서 찾을 수 있다면 해당 파일을 참고하여 ip주소..
❓ Problem 🤔 How 다차원 배열을 돌려야하는 문제가 나온다면 기존 배열을 복사 후 이동 위치에따른 움직임을 생각하는 편이다. 복사하는 과정에서 공간복잡도와 시간복잡도를 소모 할 수 있지만 개인적으로 이러한 풀이를 선호한다. 문제만 읽어보면 정말 직관적인 문제이다. 단순히 배열을 돌려서 만들어지는 배열을 출력하는 문제. 해결하기 위한 특수한 알고리즘을 사용한다기보다는 직관적으로 읽고 구현에 포커스를 맞추는 문제이다. 간단하게 핵심이되는 배열을 돌리는 코드에대해서만 추가적으로 설명하고자 한다. def rotate_board(board, round): global M, N copy_board = [line[:] for line in board] square = min(M, N) # 보정 M -= 1 ..
운영체제 (Operating System)란? 운영 체제(OS)는 간단하게 말하면 컴퓨터의 하드웨어를 관리하는 시스템(프로그램) 입니다. 운영체제는 각종 하드웨어 자원과 소프트웨어 자원을 효율적으로 운영, 관리 함으로써 사용자가 시스템을 이용하는데 편리함을 제공하는 소프트웨어입니다. 운영체제는 모든 하드웨어와 소프트웨어를 관리하는 컴퓨터 시스템인 실행 관리자로도 볼 수 있습니다. 운영체제 가 없던 시절.. 🤔 - 그럼 운영체제가 없던시절 컴퓨터를 사용할 수 없었을까 ? 운영체제의 설명을 보면 실행 관리자 표현 등을 보면 운영체제가 없으면 컴퓨터를 사용할 수 없을것 만 같다. 물론 운영체제가 없던시절에도 컴퓨터가 있었으며 사용 가능 하였다. 다만 컴퓨터의 최초의 설계 대로만 동작했고 그외 다른기능을 넣고싶..
Indently I always get triggered when people say: "I've been writing code for 'X' amount of years, therefore my argument is more valid than yours". I mean, I've been riding a bicycle for over 20 years, I'm still terrible at it, but you don't hear me telling the teens at Tour de France that I have more experience than them 🤣 What do you guys think? 번역하면 다음과같다. 나는 매번 "내가 x 년..
글을 시작하기전에 공유와 번역을 허가해준 Noah Gibbs에게 감사를 전하고싶다.😉 내 영어실력이 그리좋지 못해서 내 생각이 잘 전달된지는 모르겠다.. ㅋㅋ 몰랐던 것들 나는 컴퓨터와 함께 자란 새대이기에 컴퓨터, 스마트폰을 다루는데에 비교적 익숙하다. 그런데 생각해보면 스마트폰, 컴퓨터가 나온지인간역사로치면 그리 오래되지않았다는걸 글을 통해 실감했다.. (포트란이란 언어가 54년 에나왔으니 2024년기준 약 70년 정도 ?) 프로그래밍 역사가 생각보다 진짜 짧구나 .. 😅라는 걸 새삼 다시 느꼈다. 좋은 커뮤니케이션? 그의 글 에서 자신의 어린시절을 회상하며 외톨이였던걸 회상한다. Noah는 그때당시의 자신이 바보 였다는걸 인정하고 주변인들과 잘지내려면 오히려 딱딱한 자신이 변화 해야한다는걸 깨닫고 ..
이 글에서는 가상화 종류인 Docker에 대해서 작성합니다. Docker Docker는 Docker , inc 가 개발중인 컨테이너 환경을 제공하기 위한 소프트웨어입니다. Docker는 애플리케이션이 움직이는 환경을 컨테이너라는 단위로 가상화하고, 이 컨테이너형 가상화 뿐만아니라 컨테이너의 베이스가 되는 이미지를 효율적으로 만드는(빌드) 기능과 이미지를 배포하기 위한 구조(Docker Hub)도 갖추고 있는 것이 특징입니다. 이 글에서는 Docker의 구조 특히 컨테이너형 가상화와 이미지에 관한 부분을 간단하게 설명합니다. VM 과 Docker Docker가 제공하는 가상화의 큰 장점은 효율성입니다. 이 효율성은 도커가 컨테이너 형식의 가상화를 제공하기 때문에 실현되는것인데 지금까지 사용되었던 기타 가상..
❓ Problem 문제링크 🤔 How 중요한 포인트는 다음과 같다. 펠린드롬이라면 2 , 유사 펠린드롬이면 1, 둘다 아니라면 0을 반환한다. 유사펠린드롬은 문자 하나를 제거한뒤에 펠린드롬이 되는경우이다. 투포인터를 이용해 펠린드롬을 탐색하는 방법으로 접근했다. 그후 맞지않는 같은 단어가 아닌걸 발견하게 된다면 해당문자를 지우고 펠린드롬인지 확인하는 방법이다. 이때 좌측문자, 우측문자 두개가 있으므로 둘중 하나를 제거하여 펠린드롬 여부를 확인해야하는데 이때는 각단어 자리를 없에서 만든 새로운 문자가 펠린드롬인지 확인해준다. (slicing 을 이용하여 간단하게 새로운 문자열을 만드는 방법을 사용했다.) ❗ Solve # 회문 import sys input = sys.stdin.readline def ch..
❓ Problem 문제링크 🤔 How 그래프 탐색문제 로 분류되고 100칸에 가장 빨리가는경우를 찾는것이다. 뱀과 사다리를 만날경우 반드시 이동한다 이점을 놓지기 쉬운데 뱀과 사다리를 만나서 visited 체크를 하고 넘기는 방법으로 접근한다면 뱀 (혹은 사다리) 시작지점에서 멈추는 경우도 계산해버리게 된다. (예를들어 2->16 으로가는 사다리가있다면 사실상 2번은 방문처리 할 수없다.) ❗ Solve # 뱀과 사다리 게임 import sys from collections import deque, defaultdict input = sys.stdin.readline def solution(): global visited, board, snake_and_stair N, M = map(int, input(..
몬티홀 문제(monty-hall problem) Suppose you’re on a game show, and you’re given the choice of three doors. Behind one door is a car, behind the others, goats. You pick a door, say #1, and the host, who knows what’s behind the doors, opens another door, say #3, which has a goat. He says to you, "Do you want to pick door #2?" Is it to your advantage to switch your choice of doors? 당신이 한 게임 쇼에서 3개의 문 중에..
Stream 이 글에서는 Java 8 에서 추가된 Java 의 Stream 에 대해서 다룹니다. 스트림 ? 🤔 Java 오라클 공식문서에서 다음과 같이 Stream 을 설명합니다. [!NOTE] A sequence of elements supporting sequential and parallel aggregate operations. [!NOTE] 순차 및 병렬적인 집계연산을 지원하는 연속 된 요소 라고 표현하고 있습니다. 배열, 집합등 특정 집단의 연속적인 데이터의 흐름 으로 생각하면 좋을것 같습니다. 스트림은 어떻게 동작할까? 스트림은 다음과 같은 프로세스를 따른다 생성 (Create Stream) 스트림을 생성할 데이터 풀에서 스트림을 만드는과정이다 데이터풀은 Arraylist, set등 데이터 ..
❓ Problem 🤔 How 방을 생성하는 조건 방을 순회하여 입장할수 있는 적합 한 방이없을경우 현재플레이어를 방장으로하는 새로운 방을 만든다. 적합한 방의조건 현재 플레이어와 방장의 레벨차가 10 이하인 경우 방이 최대인원수보다 적은경우 갱신 여부를 체크하는 변수를 두어서 현재 플레이어가 입장했을경우 새로운 방을 생성하지않고 적합한 방이없는경우 새로운방을 생성하도록한다. ❗ Solve # 랭킹전 대기열 import sys input = sys.stdin.readline START = "Started!" WAIT = "Waiting!" def print_rooms(rooms): """ 방을 순회하며 출력 플레이어 인원은 닉네임이 사전순으로 앞서는 플레이어를 출력해야함 """ for room in roo..
프로그래머들은 반대입니다. (Programmers are Contrary) 다른 분야로부터 배우면 당신은 이상해질 수 있습니다. 대부분 좋은 일이지만 때로는 마찰을 일으키기도 합니다. 예를 들어 , 예술가나 음악가, 작가들은 모두 같은 활동을 계속 반복하며 능숙해진다는 사실을 알고 있습니다. 다시 쓰는 것도 마찬가지입니다. 같은 음악을 반복해서 연습하는 것도 마찬가지입니다. 인물을 그리거나 정물화를 반복해서 그리는 것도 마찬가지입니다. 소프트웨어에도 이런 말이 있습니다. "바퀴의 재발명" 이 작업은 나쁜 일로 취급되어 부끄럽게도 은밀하게 이루어집니다. 우리는 모든 반복 작업을 컴퓨터에 맡기고 새로운 작업만 할 수 있는 방법을 찾습니다. 사실, 같은 일을 반복해서 말하는 것은 대중 앞에서 망신을 당하는 지..