전체 글

전체 글

    네이버 부스트캠프 웹・모바일 8기 지원, 합격 후기

    이번 2023 네이버 커넥트재단 부스트캠프 웹모바일 8기 iOS 파트에 합격하게 되었습니다! 저도 준비하면서 이전 기수분들 글에 도움을 많이 받았고, 설명회, 수료생 밋업에 참가하며 스스로 느낀 점도 있어 다음 기수 준비하는 분들께 도움이 되고자 글을 작성하게 되었습니다. 🙂 1. 지원 배경 저는 현재 컴퓨터학부 전공 4학년이고, 막학기만을 남겨둔 상태입니다. 학교 공부가 거의 끝난 마지막 학기에는 iOS, Swift를 몰입해서 공부해보고 싶다는 생각을 가지고 있었고, 이전부터 네이버 부스트캠프가 이런 제 상황에 적합한 프로그램이라 생각해 시기에 맞춰 지원하게 되었습니다. 부스트캠프 챌린지 기간에는 높은 강도로 CS 지식을 학습할 수 있고, 멤버십 기간에는 iOS를 학습하고 이후 그룹 프로젝트까지 진행하..

    [백준 13335번] 트럭 - 파이썬

    ⚠️ 문제 https://www.acmicpc.net/problem/13335 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 🔐 풀이 트럭들이 다리를 지나감에 따라 시간대별로 다리 위의 트럭 무게를 누적해 문제를 해결했습니다. 문제의 첫 번째 예시를 이용해서 설명하자면, 우선 아래와 같이 시간대별 다리 위 트럭 무게를 0으로 초기화해줍니다. 이 때 0초는 -1로 설정하는데, 이는 나중에 모든 트럭이 다리를 건너는 시점을 무게 0을 통해 찾기 위함입니다. 트럭이 ..

    [백준 2503번] 숫자 야구 - 파이썬

    ⚠️ 문제 https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 🔐 풀이 문제에서 영수가 생각하고 있을 수 있는 정답은 1~9로 이루어진 세 자리 수이기 때문에, 우선 1~9로 이루어진 세 자리 수를 순열을 통해 모두 구해줍니다. 그리고 숫자를 한 번 물어볼 때마다 위에서 구한 숫자 리스트 중 스트라이크, 볼 개수가 맞지 않는 수를 리스트에서 제거해 나가면 마지막에 리스트에 남아있는 숫자들이 결국 영수가 생각하고 있을 수 있는 정답 숫자 리스트가 됩..

    [프로그래머스 / Lv.1] 2018 KAKAO [1차] 비밀지도 - 파이썬

    ⚠️ 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔐 풀이 이 문제는 비트 연산을 통해 해결할 수 있습니다. 두 지도를 겹쳐 지도 1, 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이기 때문에, 각 지도의 같은 행끼리 비트 or 연산을 하면 전체 지도의 벽 위치를 알 수 있습니다. 우선 각 행을 비트 or 연산한 결과를 bin() 함수를 이용해 2진수로 변환하고 [2:]를 통해 맨 앞 진법 표시를 지워줍니다. 이때 2진수의..

    [프로그래머스 / Lv.1] 명예의 전당 (1) - 파이썬

    ⚠️ 문제 https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🔐 풀이 heapq를 통해 min heap으로 해결할 수 있습니다. min heap으로 구현함으로써 honor[0]을 통해 매번 정렬하지 않고도 명예의 전당 최하위 점수를 알 수 있습니다. k일까지 모두 heapq.heappush를 통해 명예의 전당에 넣고, 이후에는 명예의 전당 최하위 점수가 새로운 점수보다 낮다면 기존의 최하위 점수를 heapq.heappop(honor)로 힙에서 ..

    [백준 1167번] 트리의 지름 - 파이썬

    ⚠️ 문제 https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 🔐 풀이 이 문제는 트리의 지름을 구하는 방법을 알고 있으면 쉽게 풀 수 있습니다. 트리의 지름을 구하는 방법은 아래와 같습니다. 트리의 임의의 노드(A)에서 가장 먼 노드(B)를 찾는다. 찾은 가장 먼 노드(B)에서 다시 가장 먼 노드(C)를 찾는다. 찾은 두 노드(B, C) 사이의 거리가 트리의 지름이 된다. 위 방법의 증명은 다른 블로그에서도 다룬 글이 많이 있으니..

    [백준 15900번] 나무 탈출 - 파이썬

    ⚠️ 문제 https://www.acmicpc.net/problem/15900 15900번: 나무 탈출 평소에 사이가 좋지 않던 성원이와 형석이가 드디어 제대로 한 판 붙으려고 한다. 성원이와 형석이 둘과 모두 똑같이 친한 인섭이가 대결 종목을 정해 가져왔다. 바로 '나무 탈출' 이라는 보드게 www.acmicpc.net 🔐 풀이 문제에서 모든 게임말은 리프 노드에 존재하고, 각 차례에 게임말을 부모 노드로 옮겨야하는데 더 이상 옮길 말이 없으면 게임이 끝납니다. 이때 먼저 게임을 시작한 "성원"이가 게임을 이기기 위해서는 말을 움직일 수 있는 총 횟수가 홀수여야 합니다. 말을 움직일 수 있는 총 횟수는 각 리프노드까지의 depth를 모두 더한 것과 같기 때문에 이를 구해 홀수인지 확인하면 성원이가 게임..

    [백준 1240번] 노드사이의 거리 - 파이썬

    ⚠️ 문제 https://www.acmicpc.net/problem/1240 1240번: 노드사이의 거리 N(2≤N≤1,000)개의 노드로 이루어진 트리가 주어지고 M(M≤1,000)개의 두 노드 쌍을 입력받을 때 두 노드 사이의 거리를 출력하라. www.acmicpc.net 🔐 풀이 BFS를 사용해 해결할 수 있습니다. graph에는 연결되어 있는 노드와의 거리, 연결되어 있는 노드 번호를 튜플로 저장해두었습니다. 거리를 구해야 하는 두 노드를 first, second라 했을 때, first에서 BFS로 그래프를 탐색하며 second까지의 거리를 구하면 됩니다. 🧑🏻‍💻 코드 import sys from collections import deque N, M = map(int, sys.stdin.read..

    [백준 5052번] 전화번호 목록 - 파이썬

    ⚠️ 문제 https://www.acmicpc.net/problem/5052 5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net 🔐 풀이 다른 비슷한 문제에서 접두어를 찾을 때 문자열 배열을 문자 길이 순으로 정렬하고 이를 이중 for문으로 확인했었는데, 이 문제를 똑같은 방법으로 풀면 시간 초과가 발생합니다. 이를 해결하기 위해서는 문자열 배열을 정렬했을 때의 특성을 파악해야 합니다. 아래와 같이 sort 함수에 인자 없이 문자열 배열을 정렬하면, 첫번째 문자를 기준으로 정렬하고 같으면 ..