링크 : https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 문제 소요시간 : 1시간 실패 설계하기(접근방법) 1. 입력받기 배열을 입력받는다 2. 구현하기 처음에는 길이가 1인 부분합, 2인 부분합.... 식으로 구했으나 결국에는 시간초과가 났다 아이디어를 바꾸어 s 이상일 때까지 p2를 움직이고 s 이상이 되면 최소 길이와 비교하고 s 미만이 될때까지 p1을 증가시키는 방식을 떠올렸다 아이디어는 맞았으나 구현을 하기 못해 실패했다..
링크 : https://www.acmicpc.net/problem/2230 2230번: 수 고르기 N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어 www.acmicpc.net 문제 소요시간: 28분 7초 설계하기(접근방법) 1. 입력받기 숫자를 입력받는다 2. 구현하기 투 포인터를 사용하기 위해서 먼저 리스트를 정렬한다 처음 시작 지점을 리스트의 인덕스 p1 = 0번 인덱스 p2 = 1번 인덱스로 지정한다 먼저 p2 -p1이 m 이상인 경우 그 뒤의 p2는 증가시켜줄 필요가 없다 p2가 커질 수록 둘의 차이가 커지기 때문에 현재 p1에서는 ..
링크 : https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 문제 소요시간: 2시간 12분 57초 설계하기(접근방법) 1. 입력받기 2. 구현하기 3. 출력하기 코드(출력) def head(nx, ny, d, direction): if direction == 0: q.appendleft([nx, ny, 1, d]) else: # 방향에 따라 변형 if direction == 'D': q.appendleft([nx, ny, 1, (d + 1) % 4]) t..
링크 : https://www.acmicpc.net/problem/2170 2170번: 선 긋기 첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. www.acmicpc.net 문제 소요시간: 47분 10초 설계하기(접근방법) 1. 입력받기 배열을 입력받는다 2. 구현하기 먼저 1차원 배열을 left를 기준으로 정렬한다 그 후 케이스를 나누어서 더해나가야 한다 이전 left, right 현재 n_left, n_right 케이스 1) 1 4 2 5 인 경우 이전의 for문에서 4 -1만큼 cnt에 더해주고 이전 right인 4를 넘..
링크 : https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 문제 소요시간: 1시간 28분 설계하기(접근방법) 1. 입력받기 파이어볼을 입력받는다 2. 구현하기 먼저 이동을 수행해준다 같은 지점에 여러개의 파이어볼이 존재할 수 있으니 이중 리스트의 형태로 넣어줄 것이다 그 후 파이어볼이 2개 이상인 위치에 대해서 문제의 요구사항을 수행해준다 방향은 dx dy 형태로 나타내어 배열 순환을 쉽게 해준다 그리고 범..
링크 : https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 문제 소요시간: 1시간 0분 54초 설계하기(접근방법) 1. 입력받기 미세먼지 배열을 입력받는다 2. 구현하기 문제의 요구대로 구현하면 된다 미세먼지의 확산은 동시에 일어난다 즉 순서대로 확산시키는 즉시 graph에 반영시키면 다음 확산에 영향을 미칠 수 있다 따라서 먼저 미세먼지가 있는 [i,j, 미세먼지 농도]를 저장한 후 그 리스트로 접근해서 미세먼지를 확산시켜야 한다 주의해야하는..
링크 : https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 문제 소요시간: 1시간 9분 설계하기(접근방법) 1. 입력받기 나라의 인구를 입력받는다 2. 구현하기 조건에 맞는 나라를 기준으로 bfs를 통해서 하나의 연합 리스트를 구한다 모든 연합 리스트를 구했다면 각 연합에 대해서 총 인구/ 연합된 나라의 수 로 graph를 초기화 해준다. 한번이 이동이 끝난 후 다음 이동을 진행한다 3. 출력하기 총 이동 횟수를 출력한다 코드(출력..
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/59044 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 소요시간 : 11분 13초 설계하기(접근방법) 1. 요구 사항 정리 1) 입양을 보내지 않은 동물 -> LEFT JOIN 후 OUT TABLE 정보가 없는 데이터 추출 2) 입양 못간 기간 오래된 순 상위 3개 -> LIMIT 3 2. 출력 컬럼 1) NAME 2) DATETIME 추가 처리 1) DATETIME 오름차순 코드(출력) SELECT I.NAME, I.DATETIME F..