분류 전체보기39 [프로그래머스] 교점에 별 만들기 문제 요약 https://school.programmers.co.kr/learn/courses/30/lessons/87377 line 배열에 여러 개의 직선값들이 주어지고 직선들의 교점을 구해서 다음과 같이 출력하는 문제이다. 이때 교점( * )을 포함하는 사각형을 최소한의 크기로 출력을 해야한다. 접근 일단 문제에 다음과 같이 참고 사항이 있어 이중 for문으로 해당 조건에 부합할 때의 x, y값을 각각 meet_x와 meet_y 배열에 저장해주었다. 이렇게 따로 저장해준 이유는 뒤에서 각 교점들의 x값과 y값의 최대최소를 보다 편리하게 구하기 위함이다. x값과 y값의 각 최대 최소값을 사용해 출력할 사각형의 최소크기를 구했다. height = max(meet_y) - min(meet_y) width .. 2024. 2. 29. [프로그래머스] 혼자 놀기의 달인 문제 요약 https://school.programmers.co.kr/learn/courses/30/lessons/131130 상자의 개수가 n일 때, 1부터 n까지의 숫자가 적혀있는 카드가 순서에 관계없이 n개의 상자에 하나씩 들어있다. 임의의 상자를 하나를 골랐을 때 나온 카드의 숫자가 8이면, 8번째 상자를 열어 카드를 확인한다. 이렇게 열어야 하는 상자가 이미 열려있을 때까지 이 과정을 반복한다. 이때 모든 상자가 열리면 0을 반환하고 그렇지 않다면 위 과정을 한번 더 실행한다. 과정이 끝나면 첫번째 과정에서 연 상자의 수와 두번째 과정에서 연 상자의 수를 곱한다. 이때 나올 수 있는 최대 점수를 구하는 문제이다. 접근 처음에는 문제가 너무 복잡하다고 생각했지만 예제를 직접 그려보면서 보니 사이클.. 2024. 2. 29. [프로그래머스] 공원 산책 문제 요약 https://school.programmers.co.kr/learn/courses/30/lessons/172928 시작점 S, 지나갈 수 있는 길 O, 장애물 X로 구성된 이차원 그래프 park가 주어진다. routes에는 방향과 이동거리가 주어진다. 시작점으로부터 이동을 하는데 이때 routes에서 주어진 경로에 장애물이 있다면 무시하고 다음 경로를 수행한다. 모든 경로를 수행했을 때 최종 위치를 반환한다. 접근 가장 먼저 시작점의 좌표를 찾아주었다. 그리고 check함수를 통해 가야하는 경로에 장애물이 있는지, 공원 밖을 넘어가는지 확인해주었다. check함수는 갈 수 없는 경로라면 False를 반환하고, 갈 수 있는 경로라면 True를 반환한다. 반환값이 True값이라면 routes에 .. 2024. 2. 29. [프로그래머스] 인사고과 문제 요약 https://school.programmers.co.kr/learn/courses/30/lessons/152995 사원들의 근무태도점수와 동료평가점수가 scores 배열로 주어진다. 이때 임의의 사원보다 근무태도점수, 동료평가점수가 모두 낮은 사원이 있다면 인센티브를 받을 수 없다. 인센티브를 받는 사원들 중 근무태도점수와 동료평가점수의 합으로 석차를 매겼을 때 원호의 석차를 구하는 문제이다. 두 점수의 합이 같은 사원이 여러 명이라면 모두 동일 등수를 가지며, 그 다음 석차는 동일석차를 가지는 사람수만큼 뒤로 밀린다. 원호의 점수는 scores[0]로 주어진다. 첫번째 시도 접근 일단 근무태도점수, 동료평가점수를 내림차순 정렬을 하면 인센티브를 받지 못하는 사원들을 거를 수 있겠다고 생각했.. 2024. 2. 29. [프로그래머스] 양궁대회 문제 요약 https://school.programmers.co.kr/learn/courses/30/lessons/92342 라이언과 어피치가 양궁대회를 한다. 어피치가 쏜 n발의 화살에 대한 정보가 info에 담겨 주어진다. 이때 라이언이 가장 큰 점수차로 이기는 화살 조합을 반환하고 이길 수 없다면 [-1]을 반환한다. 라이언이 이기는 경우는 특정 과녁 점수에 맞힌 화살의 개수가 무조건 어피치보다 큰 경우이다. 같거나 작다면 어피치가 이기게 된다. 이기는 경우가 여러 개일 때는 가장 낮은 점수를 더 많이 맞춘 조합을 반환해야한다. 접근 처음봤을 때 백트랙킹을 이용해 모든 경우를 일일이 다 훑어봐야겠다고 생각했다. 라이언이 가장 효율적으로 어피치를 이기려면 어피치보다 특정 과녁 점수에 맞친 화살의 개수.. 2024. 2. 29. [프로그래머스] 우박수열 정적분 문제 요약 https://school.programmers.co.kr/learn/courses/30/lessons/134239 입력된 수가 짝수면 2로 나누고, 홀수면 3을 곱한 후 1을 더해준다. 이 과정을 1이 나올 때까지 반복한다. 이 과정에서 나온 값들의 나열을 우박 수열이라고 한다. 우박수열에 대한 그래프를 주어진 범위에 따라 정적분해서 반환하는 문제이다. 문제 조건만 따라가면 풀 수 있는 문제였다. 코드 def solution(k, ranges): # 함수 초기값 설정 x, y = 0, k graph = [k] # 우박 수열의 함수값 구하기 while y != 1: if y % 2 == 0: y //= 2 else: y = y * 3 + 1 x += 1 graph.append(y) # 우박 수.. 2024. 2. 29. [프로그래머스] 달리기 경주 문제 요약 https://school.programmers.co.kr/learn/courses/30/lessons/178871 경주에서 현재 등수 순서대로 선수들의 이름이 담긴 players 배열과 추월한 선수의 이름이 순서대로 담긴 callings 배열이 주어진다. 추월했을 때 앞에 있는 선수와 순서가 바뀌게 된다. 경주가 끝났을 때 선수들의 순서를 배열에 담아 반환하는 문제. 접근 배열을 사용할지 딕셔너리를 사용할지 고민하다가 딕셔너리를 사용하면 value값으로 key값을 찾아야될거라고 생각해서 코드가 복잡해질 것 같아 배열을 사용했다. 배열에서 추월한 선수와 추월 당한 선수의 위치를 swap시켜 결과값을 반환했다. 이렇게 풀었더니 시간초과가 났다. players 배열의 최대 길이가 50,000이어서.. 2024. 2. 29. 비동기 처리 비동기 코드의 실행 자바스크립트는 싱글 스레드로 실행되기 때문에 동기적으로 동작한다. 따라서 자바스크립트에서 비동기 코드를 처리하기 위해서는 자바스크립트 외부의 도움을 받게 된다. 밑의 그림처럼 자바스크립트 코드가 실행되면서 call stack에 코드가 쌓이게 된다. 이때 비동기 코드는 call stack에 있다가 바로 WebAPI에 보내지게 되고 이곳에서 비동기 코드가 처리된다.처리가 완료되면 callback queue에 대기하며 call stack이 완전히 비었을 때, event loop에 의해 call stack으로 넘어와 실행된다. 즉, 모든 동기 코드가 실행된 후에야 비동기 코드들이 실행된다. 비동기 처리 비동기 요청이 여러 개일 때, 하나의 요청이 다른 요청의 결과에 의존한다면? 작업 1과 .. 2024. 2. 23. [백준] 2110 공유기설치 (Python) 문제이해 집 N개 중 C개를 골라 공유기를 각각 하나씩 설치한다. 설치된 공유기들 중 가장 인접한 두 공유기 사이의 거리가 최대여야 한다. 접근 풀기 전에 알고리즘 분류를 봐버렸기 때문에 이분탐색으로 풀어야할 것을 미리 알고 시작했다. 문제는 무엇을 기준으로 두고 이분탐색을 할 것인가 였는데 ... 이분탐색 문제에서는 그 기준에 대한 힌트를 문제의 출력값에서 찾을 수 있다. 고로 가장 인접한 두 공유기 사이의 최대 거리를 기준으로 이분탐색을 했다. 틀린 코드 import sys input = sys.stdin.readline n, c = map(int, input().split()) house = [int(input()) for _ in range(n)] house.sort() # 공유기 간 거리의 범위.. 2024. 2. 20. 이전 1 2 3 4 다음