목록2026/01 (36)
승코딩당당당
문제[C++] 백준 1715: 카드 정렬하기 GOLD 4https://www.acmicpc.net/problem/1715 접근 방법이 문제는 여러 묶음의 카드가 주어졌을 때, 모든 카드를 하나로 합치는 데 필요한 비교 횟수의 최소값을 구하는 문제이다.핵심 아이디어는 항상 가장 작은 두 묶음을 먼저 합치는 것이다.두 묶음을 합칠 때 발생하는 비교 횟수는 두 묶음의 크기 합이고, 이 값은 이후에도 계속 누적되기 때문에 작은 값부터 처리해야 전체 합이 최소가 된다. 이를 효율적으로 구현하기 위해 우선순위 큐(priority_queue) 를 사용했다.모든 카드 묶음을 우선순위 큐에 넣는다. (오름차순)큐에서 가장 작은 두 값을 꺼내 합친다.그 합을 결과에 더하고, 다시 큐에 넣는다.큐에 하나만 남을 때까지 반..
문제[C++] 백준 11047: 동전 0 SILVER 4https://www.acmicpc.net/problem/11047 접근 방법이 문제는 주어진 동전들을 이용해 합이 K가 되도록 만들 때 필요한 최소 동전 개수를 구하는 문제이다.각 동전은 무한히 사용할 수 있고, 동전의 가치들은 오름차순으로 주어진다.이 문제의 핵심은 그리디 알고리즘이다.항상 가치가 가장 큰 동전부터 최대한 사용하는 것이 최적이라는 조건이 보장되어 있다.그래서 다음과 같은 방식으로 접근했다.동전 배열의 가장 뒤(가장 큰 가치) 부터 확인한다.현재 동전이 k보다 작거나 같다면,k / coin[i] 만큼 사용할 수 있고사용한 만큼 k %= coin[i]로 남은 금액을 갱신한다.모든 동전을 확인할 때까지 반복한다.이 과정을 거치면 최소..
그래프 탐색이나 탐색 알고리즘과는 다르게,선택의 기준이 핵심이 되는 알고리즘이 바로 그리디 알고리즘(Greedy Algorithm)이다.그리디 알고리즘은 매 순간 현재 상태에서 가장 좋아 보이는 선택을 하며 문제를 해결해 나가는 방식이다. 구현이 비교적 쉽고 빠르기 때문에 코딩 테스트에서 자주 등장하지만,항상 정답을 보장하지는 않는다는 점에서 주의가 필요하다.이번 글에서는 그리디 알고리즘의 개념과 특징, 동작 과정, 그리고 사용할 때 주의할 점을 중심으로 정리해보려고 한다. ✍️ 그리디 알고리즘이란?그리디 알고리즘(Greedy Algorithm)은현재 상태에서 볼 수 있는 선택지 중 최선의 선택을 반복하는 알고리즘이다. 즉,지금 당장 가장 좋아 보이는 선택을 하고그 선택이 이후의 선택에 어떤 영향을..
문제[C++] 백준 2512: 예산 SILVER 2https://www.acmicpc.net/problem/2512 접근 방법이 문제는 각 지방의 예산 요청이 주어졌을 때, 총 예산 M을 넘지 않도록 상한액을 정해 지방 예산을 배정하는 문제이다. 핵심은 “상한액을 X로 정했을 때, 각 지방에 min(요청 금액, X)를 배정하면 총합이 M을 넘는가?”를 판단하는 것이다.상한액이 커질수록 총 배정 예산은 증가하므로, 이 조건은 단조성을 가지게 된다.따라서 상한액을 대상으로 이분 탐색(Parametric Search) 을 사용할 수 있다.가능한 상한액의 범위: 0 ~ 요청 예산의 최댓값mid를 상한액이라고 가정하고 총 배정 예산을 계산총합이 M을 초과하면 상한액을 줄이고end = (mid - 1);초과하지 ..
이번 실습에서는 아두이노 UNO와 Easy Module Shield, Arduino Motor Shield를 이용해온도 변화에 따라 모터와 LED가 동작하는 제어 시스템을 구현해보았다. 실제 온도 센서 대신,Easy Module Shield에 장착된 가변 저항을 사용하여 온도가 변화하는 상황을 가상으로 구현하였다.(실제 온습도 센서를 사용하면, 테스트가 매우 힘들기 때문이다.. 냉장고에 넣었다 뺐다...) 사용한 하드웨어 구성Arduino UNOEasy Module ShieldArduino Motor ShieldDC 모터RGB LED (Easy Module Shield 내장)12V 전원 어댑터 동작 원리가변 저항 값 범위: 0 ~ 1023저항 값이 클수록 고온, 작을수록 저온을 의미이를 기준으로 온도..
설계·구현·검증자동차 소프트웨어 개발에서 설계·구현·검증 단계는 요구사항을 실제로 동작하는 소프트웨어로 만들어 가는 핵심 과정이다.이 단계에서는 “무엇을 만들 것인가”에서 나아가 “어떻게 만들고, 올바르게 만들어졌는가”를 확인한다. 소프트웨어 설계소프트웨어 설계는 구현에 앞서 소프트웨어를 구성하는 요소와 구조를 정의하는 활동이다.설계는 이후 구현과 테스트의 기준이 되며, 변경과 확장에 유연하게 대응하기 위한 기반을 만든다.설계는 크게 두 단계로 나뉜다. 1. 아키텍처 설계상위 수준에서 소프트웨어 구성 요소들 간의 관계를 정의하는 활동이다.구조 설계, 데이터베이스 설계, 인터페이스 설계가 포함되며, 시스템 전반의 흐름과 책임 분리를 결정한다.아키텍처는 이해관계자 간 공통의 의사소통 수단이 되며,기능성, ..
V-Model과 요구사항 공학자동차 소프트웨어 개발에서 V-Model은 개발 단계와 테스트 단계를 1:1로 대응시켜 관리하는 대표적인 개발·검증 모델이다.이 모델의 핵심은 요구사항 공학이 모든 단계의 기준이 된다는 점이다. V-Model의 기본 개념V-Model은 왼쪽에서 정의·설계,오른쪽에서 검증·확인이 이루어지는 구조를 가진다.왼쪽: 요구사항 정의 → 설계 → 구현오른쪽: 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트각 테스트 단계는 대응되는 요구사항 또는 설계 산출물을 기준으로 수행된다.즉, 테스트는 구현 이후에 갑자기 시작되는 활동이 아니라, 요구사항 단계부터 함께 고려되는 활동이다. 요구사항의 정의요구사항이란 현실 세계의 문제를 해결하기 위해 고객에 의해 요구되거나,표준을 만..
자동차 소프트웨어 개발에서 안전 요구사항과 해저드 분석은사고가 발생한 이후의 대응이 아니라, 사고를 사전에 예방하기 위한 핵심 활동이다. 해저드 분석 및 리스크 평가는 시스템에서 발생할 수 있는 위험 요인을 식별하고,허용 불가능한 위험(Unacceptable Risk)을 예방하거나 완화하기 위한안전 목표(Safety Goal)를 정의하는 과정이다. 해저드 분석 및 리스크 평가 프로세스 개요해저드 분석과 리스크 평가는 일반적으로 다음과 같은 단계로 수행된다. 1. 시스템 정의 (System Definition)가장 먼저 시스템이 수행해야 할 기능(System Functions)을 정의한다.시스템이 무엇을 하고, 어떤 환경에서 운용되는지를 명확히 이해해야 이후 단계에서 발생 가능한 위험을 식별할 수 있다...
문제[C++] 백준 1300: K번째 수 GOLD 1https://www.acmicpc.net/problem/1300 접근 방법이 문제는 N×N 곱셈표에서 오름차순으로 정렬했을 때 K번째에 오는 수를 구하는 문제다.곱셈표 B를 아래와 같이 두고,B[i][j] = i * j (1 ≤ i, j ≤ N)이걸 평탄화해서 정렬했을 때 K번째 수를 찾는 게 목표다. 처음에는 실제로 N×N 배열에 값을 모두 채운 뒤 정렬해서 K번째 값을 찾는 방식으로 시도했는데,N의 범위가 크다 보니 메모리 초과가 계속 발생했다..그래서 곱셈표 전체를 만들지 않고, “어떤 값 X보다 작거나 같은 수가 곱셈표 안에 몇 개 있는지” 를 이용해서이분 탐색(Parametric Search) 으로 답을 찾는 방식으로 바꾸었다. 이 알고리즘..
문제[C++] 백준 2343: 기타 레슨 GOLD 5https://www.acmicpc.net/problem/2343 접근 방법이 문제는 N개의 강의를 순서를 유지한 채로 M개의 블루레이에 녹화할 때,각 블루레이의 최소 용량(길이) 를 구하는 문제다. 중요한 점:강의는 나누어 담을 수 없다.순서를 바꿀 수도 없다.블루레이 용량은 모두 동일해야 한다.그래서 “블루레이 용량이 X일 때, M개 이내로 모든 강의를 담을 수 있는가?”에서이 값 X를 이분 탐색(Parametric Search) 으로 찾는 식으로 접근했다.한 블루레이의 최소 용량은 가장 긴 강의 길이보다 작을 수 없다.→ start = max(vect[i])한 블루레이의 최대 용량은 모든 강의를 한 장에 몰아 넣는 경우→ end = 모든 강의 길..