위에서부터 시작해서 거쳐간 숫자의 합이 가장 큰 경우를 return해야하는 문제전형적인 dp문제인듯원래 이런문제들 보면 top-down방식으로 푸는걸 선호하지만 밑에서 부터 둘 중 최댓값을 더해주는 방식도 효율적일것 같아서 bottom-up 방식으로 풀어보았다.가독성과
문제이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다.명령어 수신 탑(높이)I 숫자 큐에 주어진 숫자를 삽입합니다.D 1 큐에서 최댓값을 삭제합니다.D -1 큐에서 최솟값을 삭제합니다.이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때
자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다.각 원소의 합이 S가 되는 수의 집합위 조건을 만족하면서 각 원소의 곱 이 최대가 되는 집합예를 들어서 자연수 2개
문제 설명네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수
문제 문제 설명 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다.Demi가 1시간 동안 작업
문제 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. words에 있는
에러코드 위 코드가 틀린 이유? 가로 세로의 첫번쨰 줄에 웅덩이가 있을 경우 그 줄은 그 이후에 싹다 0으로 됨.(왜인지는 조건을 보면 알 수 있다) 근데 전체를 1로 초기화 해줫기 때문에 그 부분이 고려 안됐음
문제 설명xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다.먼저 모든 사원이 무작위로 자연수를 하나씩 부여받습니다.각 사원은 딱 한 번씩 경기를 합니
문제 문제 설명 고속도로를 이동하는 모든 차량이 고속도로를 이용하면서 단속용 카메라를 한 번은 만나도록 카메라를 설치하려고 합니다. 고속도로를 이동하는 차량의 경로 routes가 매개변수로 주어질 때, 모든 차량이 한 번은 단속용 카메라를 만나도록 하려면 최소 몇 대
문제 설명 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5g 기지국은 4g 기지국보다 전달 범위가 좁아, 4g 기지
문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를
문제 설명개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 사용자라는 이름으로 목록을 만들어서 당첨 처리 시 제외하도록 이벤트 당첨자 담
처음에는 투포인터는 생각지도 못하고 슬라이싱으로 풀었음. 결과는 당연히 시간초과.그래서 카카오 해설을 보고 투포인터 문제인걸 보고 투포인터 사용해서 구현시작 보석의 위치인덱스를 s 마지막 보석의 위치 인덱스를 e라고 한뒤딕셔너리를 사용해서 구현했다.통과는 하지만 코드간
첫번째 코드 (효율성 테스트 실패)
통과하긴 했는데 예외처리도 되어있고, 코드가 뭔가 지저분함. 간결화 ㄱㄱsetdefault함수를 사용해서 초기 value값이 있다면 append 아니면 \[]로 해줌. -> try except 제거새롭게 알게된 사실인데 파이썬 이중 리스트는 각 행의 원소 갯수가 달
문제:https://school.programmers.co.kr/learn/courses/30/lessons/60059엄청 빡센 빡구현문제키를 4가지 방향으로 회전시켜 주는 rotate 함수 구현해주고자물쇠를 (2xn+m)\*(2xn+m) 만큼 확장 시켜주고
문제:https://www.acmicpc.net/problem/19236걸린시간 1시간30분코딩테스트를 통해 느낀점을 바탕으로 알고리즘을 푸는 연습을 해야함1, 설계 후 구현구현하는 것은 설계가 다 끝난 뒤에 하는것, 디버깅은 틀린 로직을 찾는 것이 아니고 오
문제:https://www.acmicpc.net/problem/145021.벽 3개 선택 (combinations 활용, 최대 64 C 3)2.bfs ( 최대 8x8 ) 3.그래프 내 0인 공간의 갯수 계산 ( 완탐이므로 최대 8x8 ) 수행 과정은 1x(2+
문제:https://www.acmicpc.net/problem/145001.테트로미노가 가질 수 있는 경우의 수를 move 리스트 변수안에 선언 (23개)2\. bruteforce, 그래프의 각 위치를 순회하며 move 변수 또한 순회(23x4xNxM===대략
문제:https://www.acmicpc.net/problem/3190처음에는 단순히 R들어오면 reverse, D들어오면 pop(0)을 해주었음, 이런문제는 보통 deque를 사용하면 수월하게 풀 수 있지만 리스트를 사용해도 가능할거 같아서 그냥 리스트만 활
deque 자료구조를 활용하여 구현 다음 향할 좌표를 큐의 맨 앞에 넣어주고 꼬리를 큐의 맨 뒤에서 빼는 연산을 통해 문제 해결초기 time 값을0으로 해주어서 몇번 에러가 났었던 문제, 구현과 시뮬레이션 문제를 풀때 초기 데이터를 정확하게 설정할 수 있도록 신경써야함
문제:https://www.acmicpc.net/problem/16236도식화1\. 먹을 수 있는 물고기 갯수 파악2\. 먹을 수 있는 물고기들의 좌표 파악 (리스트로 반환)3\. 리스트에서 하나씩 좌표를 꺼내가며 bfs 연산, 이때 도달할 수 없는 곳이면 f
문제:https://www.acmicpc.net/problem/14499초기 주사위의 상태의 위치를 기준으로 딕셔너리 선언, 주사위를 굴릴때마다 딕셔너리 값을 바꾸는 과정을 통해 (실제로는 한칸씩 옮겨간다고 생각하면 될듯) 해결
전체 도시를 순회하면서 각각의 도시를 기준으로 bfs진행후 인구 갱신. 이때 bfs 탐색이 끝난 후 다른 기준 도시를 탐색할때 visited 기록이 있는지 확인해야함. visited기록이 있다면 이미 연합에 속해진적이 있다는 의미므로 연산이 중복된다.
재귀 dfs+구현으로 풀이 재귀의 깊이가 10이 넘어가거나 빨간색공 파란색공이 구멍에 빠지게 되면 return동서남북 각각 4방향으로 분기를 나눠주어 dfs진행한다. 이때 두 구슬은 동시에 움직이므로 각각의 위치마다 우선순위를 부여해주어야함. 예를들어 왼쪽으로 기울이는
문제:https://www.acmicpc.net/problem/171441초동안 다음과 같은 일이 순서대로 발생함1.미세먼지의 확산2.공기청정기의 정화작업이 두 순서대로 도식화를 진행하면 된다.처음에는 별다른 알고리즘 로직이 필요해 보이지 않아서 간단하게 구현
문제:https://www.acmicpc.net/problem/16235봄 여름 가을 겨울을 각각 함수로 만들어 도식화 하였다. 테스트케이스를 다 통과했음에도 불구하고 계속해서 시간초과가 났었는데 각 반복문마다 if treesi: 를 넣어주니 시간초과가 발생
문제 : https://www.acmicpc.net/problem/15684추가 사다리의 갯수가 4개 이상이 되거나 사다리를 어떤 식으로 조작해도 각각의 세로선이 일치하지 않으면 -1을 출력한다. 즉 추가 사다리 경우의 수를 0~3까지 combintaion연산
위 문제를 도식화하면 다음과 같다낚시꾼이 상어를 잡음->상어가 움직임두 행위를 함수로 각각 정의해주면 됨.위 문제를 풀면서 moveshark함수에서 자꾸 graph가 정의되어 있지 않다고 오류가 떳음. 문제는 다음 코드에 있었다.
도식화 과정은 다음과 같다.궁수 세명 배치 -> 궁수공격 -> 적이동위 문제에서 다음 부분을 간과하여 시간을 오래 잡아먹었다.궁수가 공격하는 적은 거리가 D이하인 적 중에서 가장 가까운 적이고, 그러한 적이 여럿일 경우에는 가장 왼쪽에 있는 적을 공격한다. 같은 적이
뿌요뿌요와 2048같은 구현문제를 풀다보면 리스트의 원소들을 바닥부터 다시 차곡차곡 쌓아야 하는 코드를 구현해야 할 때가 있음뿌요뿌요를 예를들면 현재상태가 다음과 같다고 하자0 0 0 0a a b cb b a ab b b b그럼 한번 터지면 다음과 같이 됨0 0 0 0
열정렬은 원래 그래프를 zip연산 한 후 행정렬을 시행해주는 것과 동일하다 즉 행정렬 함수만 정의하면 해결되는 문제.사용법은 대충 알고 있으나 보다 자세하게 알기 위해 정리함. 좀 늦었지만 이제라도 해야지map함수는 주어진 시퀀스(리스트,튜플 같은거)의 모든 요소에 주
문제:https://www.acmicpc.net/problem/20056구현까지는 수월하게 진행하였으나 input 과정에서 에러때문에 시간을 많이 잡아먹은 문제, (m,d,s 를 m,s,d로 대입하였음)추가) 구글링하다가 깔끔한 코드가 있어서 도움될거같아 첨부
문제 : https://www.acmicpc.net/problem/17281순서 배열을 1,2,3,0,4,5,6,7,8 로 고정하고 각 이닝에서 얻는 결과를 permutations 하여 계산하고자 함. 하지만 그렇게 하면 각 이닝이 끝났을때 그 다음 타자를 계
문제 : https://www.acmicpc.net/problem/19238세가지 부분으로 도식화 하였다.1) 가장 가까운 고객의 위치를 찾고 해당 위치로 택시를 이동시키는 함수2) 1)에서 반환된 고객의 목적지를 찾고 해당 위치로 택시를 이동시키는 함수3)
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12924처음에는 bruteforce 로 접근하려고 하였으나 n이 최댓값이 10000이어서 이 방법은 pass,dp, 약수 갯수 등등 다른 여러 방
문제 : https://www.acmicpc.net/problem/17837처음에 deque을 사용하여 구현했는데 실패함.. 시간초과가 뜨는게 아니라 아예 예제 테스트케이스부터 실패하길래 뭐지? 하고 리스트 슬라이싱을 사용해서 풀었는데 또 실패.. 5일 걸려서
문제 : https://www.acmicpc.net/problem/1022세가지 단계로 도식화하여 접근하였다.1\. 소용돌이 형태로 전체 그래프 초기화2\. 그래프에서 가장 긴 숫자 (가장 큰 숫자)의 길이 만큼 나머지 숫자의 길이도 맞춰줌 문제에서 요구한 범
백준 스도쿠 문제를 풀고있을 때 한가지 신기한 사실을 알게됨 그 이유는 다음과 같음 파이썬에서 리스트나 딕셔너리 같은 가변 객체를 다른 변수에 할당할 때 실제 값을 복사하는 것이 아니라 해당 객체의 주솟값을 전달함. 그래서 해당 객체 내의 값을 변경하면 똑같이 변수
문제 : https://www.acmicpc.net/problem/2174좌표계 설정을 잘못함, 문제에서 북쪽(N)으로 향할 경우 좌표계가 늘어남, 즉 idx가 늘어나는 방향을 N으로 설정해야 했으나 초기에 N을 idx가 줄어드는 방향으로 설정하여 N값의 방향
문제 : https://www.acmicpc.net/problem/21609전체 코드를 구현하는 시간은 1시간 정도로 오래 걸리진 않았으나, 예제는 계속해서 통과하는데 실제 제출하면 1~2% 에서 계속해서 문제가 발생하였음. 디버깅하는데 총 이틀걸림 ㅠ.. 계
문제 : https://www.acmicpc.net/problem/1722permutaions 라이브러리를 활용하여 해결하려 했으나, n의 최댓값이 20까지 가능하다는 점에서 permutations을 사용하여 푸는것은 연산량의 문제로 (20!) 사실상 불가.
문제 : 스티커 붙이기 1) 맨 위 왼쪽에서 시작해서 오른쪽으로 한칸씩 가면서 시작지점 선택 -> 2)탐색 후 가능하면 graph 값 갱신, 불가능하면 rotate함수로 sticker 변수 전달해준 후 다시 1)로 -> 1의 갯수 센 다음에 total 출력의 방식으로
문제 : https://www.acmicpc.net/problem/16927한 회전 마다 전체 배열을 시작부터 끝까지 모두 회전시켜 주는 식으로 구현하였으나 회전 하는 경우의 수 r의 최댓값이 10^9이었으므로 바로 시간초과가 발생하였음. r의값 만큼 모두 회
문제 : https://www.acmicpc.net/problem/1756피자는 위에서 부터 떨어진다. 즉, 제일 먼저 떨어지는 피자가 도달한 오븐위에는, 첫 피자 보다 작은 피자들이 차곡 차곡 쌓인다. 다시 말해서, 제일 먼저 떨어져야 하는 피자의 다음 순서
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/161988처음에 start와 end 포인터를 설정한 후 다음 인덱스가 양수라면 end+1, 아니라면 start+1을 하는 방식으로 접근하였으나 실
플그 lv3 문제를 풀다가 누적합에 대한 공부가 필요한거 같아서 정리함지금 까지 누적합과 투포인터 두 기법에 대한 개념 정리가 모호했던거 같은데 이기회에 확 잡고자 한다.주로 배열 내에서 연속된 부분 배열 또는 구간을 처리하거나 조건을 만족하는 부분을 찾을 때 사용되는
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42627현재 시간을 기준으로 요청 받은 시간에서 실행 종료 시간 까지을 기준으로 정렬한 후 첫번째 인덱스부터 꺼내서 처리하였다.-> 마지막 테케
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/150368먼저 할인율이 10, 20 ,30 ,40으로 4가지 밖에 존재하지 않는다는 점과, 이모티콘의 갯수 m또한 최댓값이 7밖에 되지 않는 다는
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/131129dp배열을 선언하고 각각의 인덱스에 해당 인덱스 만큼의 점수를 얻을 수 있는 다트의 최소 갯수와, 해당 다트의 갯수일때 싱글or 불의 다
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17676처음에 문제를 보자마자 그전의 기출을 통해 그리디 알고리즘으로 해결해야 하는 문제인것은 캐치하였으나, 그 이후로 나아가질 못하였다. N의
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12907동적계획법을 활용한 bootom-up 방식으로, 값이 올라갈수록 해당 경우의 수를 갱신하여 계산하고자 함처음에는 dpn 배열을 선언하고,
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/60062각각의 데이터의 크기가 크지 않아 완전탐색 알고리즘으로 접근하였다. n짜리의 원형의 외벽을 크기 2n짜리 배열을 생성하고, range(0,
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/60061기둥배열과 보 배열을 각 각 따로 이차원 배열로 생성해주었고. 기둥과 보의 시작점과 끝점을 각각 1로 설정해준후 구현하였음. 0ㅡ0ㅡ0 보
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/60061기둥배열과 보 배열을 각 각 따로 이차원 배열로 생성해주었고. 기둥과 보의 시작점과 끝점을 각각 1로 설정해준후 구현하였음. 0ㅡ0ㅡ0 보
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/60061기둥배열과 보 배열을 각 각 따로 이차원 배열로 생성해주었고. 기둥과 보의 시작점과 끝점을 각각 1로 설정해준후 구현하였음. 0ㅡ0ㅡ0 보
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/60061기둥배열과 보 배열을 각 각 따로 이차원 배열로 생성해주었고. 기둥과 보의 시작점과 끝점을 각각 1로 설정해준후 구현하였음. 0ㅡ0ㅡ0 보
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/87694사각형을 하나씩 순회하면서 모서리 부분은 1, 안쪽 부분이거나 다른 사각형의 안쪽부분이라면 0으로 그래프 초기화실제 문제의 좌표평면을 그래
비트스트림에서 i번째 인덱스의 값을 딕셔너리의 키가 i일때 value 값을 구하는 방식으로 구현훨씬 직관적인듯