Dev2yup의 프로그래밍 이야기 🖥 💻

전체 글 112

[웹 프로그래밍] 공공 데이터 포털에서 기상청_단기예보 ((구)_동네예보) 조회서비스 API 이용

API를 호출하여 사용하는 실습을 해보기 위해 날씨를 불러와 표현해주는 페이지를 만들어보기로 결정하였다. 1. 공공 데이터 포털의 기상청_단기예보 ((구)_동네예보) 조회서비스 공공 데이터 포털에서 제공하는 기상청 단기예보 API를 사용하는 방법은 아래 글을 참고. https://velog.io/@choonsik_mom/python-OpenAPI%EA%B8%B0%EC%83%81%EC%B2%AD-API%EB%A1%9C-%EB%82%A0%EC%94%A8-%EC%A0%95%EB%B3%B4-%EB%B6%88%EB%9F%AC%EC%98%A4%EA%B8%B0 (python-OpenAPI)기상청 API로 날씨 정보 불러오기 기상청 Open API를 활용하여 날씨 정보 얻기 velog.io 2. 출력 더보기 ◇◇◇◇ ..

[111] C++(Cpp) 백준 12865번: 평범한 배낭 문제 (다이나믹 프로그래밍, 동적계획법)

시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 512 MB 116440 43229 27678 35.655% 문제 이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다. 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자. 입..

C++ 2023.11.05

[110]C++(Cpp) 백준 1149번: RGB거리 (다이나믹 프로그래밍, 동적 계획법)

RGB거리 시간 제한메모리 제한제출정답맞힌 사람정답 비율 0.5 초 (추가 시간 없음) 128 MB 104971 57922 43151 54.412% 문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 입력 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다...

C++ 2023.10.17

[109]C++(Cpp) 백준 4779번: 칸토어 집합 문제 (분할 정복, 재귀)

칸토어 집합 한국어 시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 9521 4343 3564 45.108% 문제 칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고, 다음과 같은 과정을 통해서 칸토어 집합의 근사를 만들어보자. 1. -가 3^N개 있는 문자열에서 시작한다. 2. 문자열을 3등분 한 뒤, 가운데 문자열을 공백으로 바꾼다. 이렇게 하면, 선(문자열) 2개가 남는다. 3. 이제 각 선(문자열)을 3등분 하고, 가운데 문자열을 공백으로 바꾼다. 이 과정은 모든 선의 길이가 1일때 까지 계속 한다. 예를 들어, N=3인 경우, 길이가 27인..

C++ 2023.10.17

[108]C++(Cpp) 백준 24511번: queuestack문제 (자료구조, 덱)

1. 첫 접근 (실패: 시간초과) 1) 배열 A와 이차원 배열 B를 만든다. (B의 행 부분은 순서, 열 부분의 0번 인덱스는 원래 요소, 1번 인덱스는 삽입된 요소를 넣는다.) 2) C의 수열을 하나씩 입력받아 queuestack에 삽입한다. 이때 배열 B를 이용해 queuestack 작동을 구현하였는데 이중 for문이 되어 시간복잡도가 증가한 것 같다. 이 방법으로는 이중 for문을 피할 수 없어 다른 접근 방법을 모색해야 했다. #include using namespace std; int main(void) { cin.tie(NULL); ios_base::sync_with_stdio(false); int N, M, element, poped; int* A; // 자료구조 int** B; // que..

C++ 2023.09.30

[106]C++(Cpp) 백준 16139번: 인간-컴퓨터 상호작용 문제 (누적 합)

서브태스크 1 (50점) 문자열의 길이는 2,000$2,000$자 이하, 질문의 수는 2,000$2,000$개 이하이다. 서브태스크 2 (50점) 추가 제한 조건이 없다. 예제 입력 1 seungjaehwang 4 a 0 5 a 0 6 a 6 10 a 7 10 예제 출력 1 0 1 2 1 이 문제는 각 인덱스에서 a-z의 알파벳이 몇번씩 쓰였는지 누적 합을 구하는 문제이다. 문자열의 각 인덱스에 어떤 알파벳이 몇번 쓰였는지 저장하기 위해서 2차원 배열을 사용한다. for (int i = 1; i > A >> L >> R; cout S; for (int i = 1; i > Q; for (int i = 0; i > A >> L >> R; cout

C++ 2023.01.17

[105]C++(Cpp) 백준 2559번: 수열 문제 (누적 합)

문제 매일 아침 9시에 학교에서 측정한 온도가 어떤 정수의 수열로 주어졌을 때, 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 알아보고자 한다. 예를 들어, 아래와 같이 10일 간의 온도가 주어졌을 때, 3 -2 -4 -9 0 3 7 13 8 -3 모든 연속적인 이틀간의 온도의 합은 아래와 같다. 이때, 온도의 합이 가장 큰 값은 21이다. 또 다른 예로 위와 같은 온도가 주어졌을 때, 모든 연속적인 5일 간의 온도의 합은 아래와 같으며, 이때, 온도의 합이 가장 큰 값은 31이다. 매일 측정한 온도가 정수의 수열로 주어졌을 때, 연속적인 며칠 동안의 온도의 합이 가장 큰 값을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫..

C++ 2023.01.11

[104]C++(Cpp) 백준 11659번: 구간 합 구하기 4 문제 (누적 합)

문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 제한 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N 예제 입력 1 5 3 5 4 3 2 1 1 3 2 4 5 5 예제 출력 1 12 9 1 처음에는 단순히 배열에 수열을 받아 i부터 j까지 직접 합을 구하는 방법을 사용하였는데, 시간 복잡도 문제 때문에 시간 초과가 발생하였다..

C++ 2023.01.09

[103] C++(Cpp) 백준 15652번: N과 M (4) 문제 (백트래킹)

문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 예제 입력 1 3 1 예제 출력 1 1 2 3 예제 입력 2 4 2 예제 출력 2 1 1 1 2 1 ..

C++ 2022.12.22

[102] C++(Cpp) 백준 4949번: 균형잡힌 세상 문제 (스택, 문자열, 자료구조)

문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다. 짝을 이루는 두 괄호가 있을 때, 그 사이에 있..

C++ 2022.11.28