
문제 A[1], A[2], ..., A[N]의 N개의 정수가 저장되어 있는 배열이 있다. 이 배열 A의 부분합이란 1 ≤ i ≤ j ≤ N인 정수 i와 j에 대해 A[i]부터 A[j]까지의 합을 말한다. N과 A[1], A[2], ..., A[N]이 주어졌을 때, 이러한 N×(N+1)/2개의 부분합 중 합이 K인 것이 몇 개나 있는지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N과 K가 주어진다. (1 ≤ N ≤ 200,000, |K| ≤ 2,000,000,000) N과 K 사이에는 빈칸이 하나 있다. 둘째 줄에는 배열 A를 이루는 N개의 정수가 빈 칸을 사이에 두고 A[1], A[2], ..., A[N]의 순서로 주어진다. 주어지는 정수의 절댓값은 10,000을 넘지 않는다. 출력 첫째 줄에..

https://www.acmicpc.net/problem/1092 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 박스 list와 크레인 배열을 모두 내림차순으로 정렬한다. 가장 무거운 박스부터 크레인으로 옮길 수 있는지 확인해야 하므로 box.get(0)으로 가장 앞에 있는 박스를 가져온다. - 만약 크레인으로 옮길 수 있는 박스라면 박스 list에서 삭제하고, 크레인의 인덱스를 1 증가시킨다. - 크레인으로 옮길 수 없는 박스라면 박스 list의 가장 맨 뒤로 이동시킨다. - 만약 현재의 ..

https://www.acmicpc.net/problem/21758 21758번: 꿀 따기 첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다. www.acmicpc.net 각 장소에서 딸 수 있는 꿀의 양이 입력으로 주어진다. 벌은 벌통까지 직선으로 이동하며 꿀을 딸 수 있다. 벌 두 마리와 벌통의 위치를 적절하게 정하여 벌들이 딸 수 있는 최대의 꿀의 양을 출력하는 문제다. 그리디 알고리즘을 사용하는 문제다. N의 최대가 100000이므로 선형 시간이 들도록 알고리즘을 짜야 한다. 조금 복잡하게 푼 것 같지만.. 먼저 세가지의 경우로 나눌 수 있다. 1) 벌통이 가장 오른쪽에 위치하는 경우 2) 벌통이 중간에 위치하는 경우 3) 벌통이 가장 왼쪽에 위치하는 경우 1)번의 경우 꿀의 양이 최대가 되려면 첫..
https://school.programmers.co.kr/learn/courses/30/lessons/12904 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 프로그래머스 코딩테스트 연습 Level 3 문제다. 주의할 점 - StringBuilder의 reverse와 String의 substring은 피하자. (substring은 O(n)) - 팰린드롬의 길이가 무조건 홀수는 아니다. abba 처럼 짝수인 경우도 존재한다. (테케 12번) 위 사항을 간과한 채 문제를 풀었더니 4, 6, 7, 12, 효율성1 테케가 틀렸었다. substring 대신 인덱..
https://school.programmers.co.kr/learn/courses/30/lessons/1829 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2017 카카오코드 예선 Level 2 문제다. DFS나 BFS로 쉽게 풀 수 있는 문제다. 문제에 오류가 있는지 static 변수인 cnt와 max를 solution안에 초기화를 했을 때 정답처리 되었다. solution 함수 밖에서도 m, n, picture를 사용하기 위해 static으로 int M, N, int[][] pictures를 선언하고 대입해주었다. 그리고 picture의 원소 하나..
https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2018 KAKAO BLIND RECRUITMENT Level 2 문제다. Level 2지만 생각보다 오래 걸린 문제다. 접근하기는 쉬운데 테케 몇개 틀리다고 뜨면 반례를 생각해내기가 어려운 것 같다. static String[][] alpha = {{"A#", "a"}, {"G#", "g"}, {"F#", "f"}, {"D#", "d"}, {"C#", "c"}}; // # 들어가는 음을 다른 알..
https://school.programmers.co.kr/learn/courses/30/lessons/42892 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2019 KAKAO BLIND RECRUITMENT Level 3 문제다. for(int i=0;i o1.y == o2.y ? o1.x - o2.x : o2.y - o1.y); 먼저 nodeinfo에 있는 노드들을 Node의 객체로 생성해 ArrayList nodes에 넣어준다. Node들이 담긴 nodes를 y가 큰 순서대로, y가 같다면 x가 작은 순서대로 정렬한다. 레벨이 높은 순서대로 정렬..
https://www.acmicpc.net/problem/2870 2870번: 수학숙제 종이에서 찾은 숫자의 개수를 M이라고 하면, 출력은 M줄로 이루어져야 한다. 각 줄에는 종이에서 찾은 숫자를 하나씩 출력해야 한다. 이때, 비내림차순으로 출력해야 한다. 비내림차순은 내림차 www.acmicpc.net 문제 상근이는 수학시간에 딴 짓을 하다가 선생님께 걸렸다. 선생님은 상근이에게 이번 주말동안 반성하라며 엄청난 숙제를 내주었다. 선생님이 상근이에게 준 종이에는 숫자와 알파벳 소문자로 되어있는 글자가 N줄있다. 상근이는 여기서 숫자를 모두 찾은 뒤, 이 숫자를 비내림차순으로 정리해야한다. 숫자의 앞에 0이 있는 경우에는 정리하면서 생략할 수 있다. 글자를 살펴보다가 숫자가 나오는 경우에는, 가능한 가장 ..