본문 바로가기

분류 전체보기40

[프로그래머스] lv2. 테이블 해시 함수 - Python 문제 https://school.programmers.co.kr/learn/courses/30/lessons/147354 위 문제는 문제 조건을 착실히 구현하면 비교적 해결할 수 있는 문제입니다. 그러나 저의 경우 비트연산자(XOR)를 기억하지 못해 이를 참조하며 해결하였는데요. 문제 조건을 먼저 살펴보도록 하겠습니다. 조건 2를 통해 가장 먼저 정렬을 해주어야 함을 알 수 있습니다. lambda를 활용해 정렬의 우선순위를 정해주어 이를 해결할 수 있습니다. 조건 3을 통해 정렬된 데이터를 순회하며 (데이터 % 인덱스)의 값을 누적시켜야 함을 알 수 있습니다. 조건 4를 통해 우리는 문제에서 주어지는 row_begin ~ row_end 구간의 합을 누적하여 누적합의 XOR 값을 구해주어야 함을 알 수 있.. 2023. 6. 8.
[프로그래머스] lv2. 모음 사전 - Python 문제 https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위 문제는 중복 순열을 활용해주어야 하는 문제입니다. 문제를 살펴보면 A, E, I, O, U 만을 활용하여 만들 수 있는 크기가 6 이하인 모든 단어를 구해주어야 하는 것을 알 수 있습니다. 또한, 주어진 입력 예제를 보았을 때, AAAAE는 6을 리턴하므로, A - AA - AAA - AAAA - AAAAA 다음에 위치하는 것을 알 수 있습니다. 따라서, 순서를 고려하여 뽑아야 하고, 중.. 2023. 6. 8.
[프로그래머스] lv1. 과일 장수 - Python 문제 https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위 문제는 조건에 맞게 사과상자를 만들어 준 뒤 각 상자에 담긴 가장 낮은 품질의 사과 점수를 활용해 답을 구해줄 수 있습니다. 저의 경우 사과 점수를 가장 먼저 내림차순 정렬한 뒤, 사과 상자의 크기인 m씩 증가하며 점수 리스트를 순회함으로써 만들 수 있는 사과 상자를 모두 구해주었습니다. 만들 수 있는 사과 상자에서 문제 조건에서 주어진 사과 상자의 크기와 상자 길이가 같다면, 점수를 .. 2023. 6. 8.
[Network] TCP의 3-way handshake와 4-way handshake TCP의 3-way handshake란? TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 세션을 수립하는 과정을 의미한다. TCP는 장치들 사이에 논리적인 접속을 성립(established)하기 위해 3-way handshake를 사용한다. 그림으로 살펴보는 3-way handshake STEP 1. A 클라이언트는 B 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 클라이언트 A는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 되는 것이다. STEP 2. B 서버는 SYN 요청을 받고 클라이언트 A에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고 A가 다시 ACK로 응답.. 2023. 6. 7.
[프로그래머스] lv2. 연속된 부분 수열의 합 - Python 문제 https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위 문제는 비내림차순으로 정렬된 수열이 주어질 때, 부분 수열의 합이 k인 구간을 찾고, 구간이 여러개 존재하게 되면 그 구간의 길이가 짧은 것을 구해줘야 하는 문제 입니다. sequence의 길이가 1,000,000이기 때문에 O(N^2)의 시간 복잡도로 이루어진다면 시간 초과가 발생하게 됩니다. 따라서 구간합과 투포인터를 활용하여 부분 수열의 합이 k인 구간을 찾아주고, 이 구간들의 길.. 2023. 6. 5.
[Java] 자바의 컴파일 과정 들어가기 전 자바는 OS에 독립적인 특징을 가지고 있습니다. 이는 JVM(Java Virtual Machine) 덕분인데요. 그렇다면 JVM의 어떠한 기능 때문에, OS에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 알아보도록 하겠습니다. 자바의 컴파일 순서 개발자가 자바 소스코드(.java)를 작성합니다. Java Compiler가 자바 소스코드를 컴파일 합니다. 이 때 나오는 파일은 자바 바이트 코드(.class) 파일로 컴퓨터가 읽을 수 없습니다. 이는 자바 가상 머신이 이해할 수 있는 코드 입니다. 바이트 코드의 각 명령어는 각 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있습니다. 컴파일된 바이트 코드를 JVM의 클래스 로더에게 전달합니다. 클래스 로더는 동적로딩(Dynamic .. 2023. 6. 1.