목록2026/02 (49)
승코딩당당당
출판사 서평 “그애는 나의…… 질문입니다.나에게 주어진 지극한, 가장 어려운 질문입니다.”부모의 생사를 알지 못한 채 보육원에서 자란 한 소녀. 그녀는 어느 날 자신에게 특별한 능력이 있다는 것을 알게 된다. 타인의 상처에 손을 대면 그의 생각을 말 그대로 ‘읽을’ 수 있다는 것. 그녀는 어린 시절 사고로 다친 친구의 출혈을 멈추기 위해 상처를 손바닥으로 눌렀을 때 자신의 머릿속으로 쏟아져들어오는 언어의 홍수를 통해 그러한 능력을 어렴풋이 자각하지만 그것을 이용할 수 있으리라는 생각은 하지 못한 채 성장한다. 한편 우연히 그녀의 능력을 알게 된 사업가 문오언은 그 능력을 어디에 활용할 수 있을지 누구보다 잘 알고 있는 인물이다. 오언은 보육원을 나온 뒤 고단한 삶을 이어가다 도움을 구하기 위해 자신을 찾..
문제[C++] 백준 1991: 트리 순회 SILVER 1https://www.acmicpc.net/problem/1991 접근 방법백준 1991번은 이진 트리의 전위, 중위, 후위 순회 결과를 출력하는 문제다. 각 노드는 대문자 알파벳으로 표현되고, 입력으로 (부모, 왼쪽 자식, 오른쪽 자식) 형태가 주어진다.자식이 없는 경우는 '.'로 표시된다. 이 문제의 핵심은:트리를 직접 구성하고재귀를 이용해 3가지 순회 방식을 구현하는 것트리의 노드는 최대 26개(알파벳 A~Z)이므로 배열을 이용해 간단히 표현할 수 있다. 처음에 DFS로 푸는 문제라고 생각하여 DFS로 전위순회를 구현했지만 중위순회부터 막혔다..ㅠㅠ다른 사람들이 푼 걸 보니 너무 간단하게 푸는 문제여서 현타MAX.... 아래 블로그를 참고하였..
문제[C++] 백준 16953: A → B SILVER 2https://www.acmicpc.net/problem/16953 접근 방법백준 16953번은 정수 A를 B로 바꾸는 최소 연산 횟수를 구하는 문제다.사용할 수 있는 연산은 두 가지뿐이다.현재 값 × 2현재 값 뒤에 1을 붙이기 (예: 23 → 231)이 문제는 연산이 두 갈래로 계속 뻗어나가는 구조이기 때문에 그래프 탐색 문제로 볼 수 있다. 각 숫자를 하나의 노드라고 생각하면,val → val * 2val → val * 10 + 1이렇게 두 개의 간선이 존재하는 셈이다.최소 연산 횟수를 구해야 하므로 BFS(너비 우선 탐색) 을 사용했다. 상세 아이디어1. BFS로 최소 횟수 탐색queue> Q;Q.push(make_pair(a, 1)); ..
문제[C++] 백준 1764: 듣보잡 SILVER 4https://www.acmicpc.net/problem/1764 접근 방법이 문제는 듣도 못한 사람 N명 + 보도 못한 사람 M명이 주어졌을 때, 두 목록에 모두 속하는 사람(= 듣보잡) 을 찾는 문제다. 즉, 간단히 말하면문자열 집합 A와 집합 B의 교집합을 구한 뒤, 그 결과를 사전 순으로 정렬해서 출력하는 문제. 풀이 아이디어는 이렇게 잡았다.먼저 듣도 못한 사람 N명을 입력받으면서 map who에 이름을 저장한다.이름을 key, 값을 1로 저장 → 존재 여부 체크용다음으로 보도 못한 사람 M명을 입력받으면서who[str] == 1이면 듣도 보도 못한 사람이므로 ret 벡터에 push.ret에 모아둔 이름들을 sort로 사전 순 정렬한 뒤,개수..
문제[C++] 백준 15654: N과 M (5) SILVER 3https://www.acmicpc.net/problem/15654 접근 방법이 문제(백준 15654)는 주어진 N개의 서로 다른 자연수 중에서 M개를 골라 나열하는 모든 수열을 출력하는 문제다.즉, 중복 없는 순열을 구하는 문제이고, 입력으로 주어진 수들을 사용한다는 점이 15649랑 다르다. 문제 조건:수들은 1, 2, 3, … 이 아니라 입력으로 주어지는 임의의 수들한 수는 한 번만 사용할 수 있음 (중복 선택 불가)출력은 사전 순(오름차순) 으로 나와야 함그래서 풀이 전략은:먼저 입력받은 수들을 vect에 저장하고 sort로 정렬한다.→ 이렇게 하면 백트래킹을 할 때 작은 수부터 탐색하게 되어, 자연스럽게 사전 순으로 수열이 출력된다..
이번 실습에서는 변수의 선언 방식에 따라 메모리의 어느 영역에 배치되는지를 직접 확인해보았다.임베디드 시스템에서는 메모리 구조를 이해하는 것이 매우 중요하며, 특히 전역 변수, static 변수, 지역 변수, const 상수 등이 각각 어떤 메모리 영역에 저장되는지를 명확히 아는 것이 필요하다. 이를 위해 전역 변수(.data / .bss), 읽기 전용 상수(.rodata), 지역 변수(Stack), 그리고 전역 배열을 이용한 힙 역할 영역을 코드로 선언하고, ADS 디버거를 통해 실제 메모리 주소를 확인하였다. 단순히 이론적으로 배우는 것이 아니라, 브레이크포인트를 걸어 Expressions 창에서 변수의 주소를 직접 확인함으로써 각 영역의 차이를 비교하였다. 이 과정을 통해 Flash 영역, RAM ..
문제[C++] 백준 2578: 빙고 SILVER 4https://www.acmicpc.net/problem/2578 접근 방법이 문제는 사회자가 숫자를 하나씩 부를 때마다, 현재 내 빙고판에서 몇 개의 빙고 줄이 완성되었는지를 확인해서가장 처음으로 빙고 3줄 이상이 되는 순간의 호출 횟수를 출력하는 문제다. 기본 아이디어는 다음과 같이 잡았다.빙고판 입력5×5 빙고판을 vect[5][5]에 저장한다.이후 사회자가 부르는 숫자 25개를 call 벡터에 저장한다.숫자가 불릴 때마다 처리find(call[i]) 함수로 현재 숫자 call[i]이 빙고판 어디에 있는지 찾아서 그 위치를 -1로 표시한다.(지워진 칸 = 체크된 칸)동시에, 그 칸의 좌표를 전역 변수 yy, xx에 저장해둔다.해당 위치 기준으로 빙..
이번 실습에서는 TC725 보드에서 GPIO를 이용해 4자리 FND(7-Segment) 디스플레이를 제어하는 카운터 시스템을 구현한다. 하드웨어 SPI 모듈을 사용하는 대신, SCLK·RCLK·DIO 핀을 직접 제어하는 비트뱅잉(Bit-Banging) 방식의 소프트웨어 SPI로 데이터를 전송하도록 구성하였다. 카운터 값은 0부터 9999까지 증가하며, 각 자리 숫자는 _LED_0F[] 배열을 통해 7-Segment 패턴으로 변환된다. 4자리 FND는 멀티플렉싱 방식으로 동작하며, send_port() 함수를 통해 자리 선택 신호와 세그먼트 데이터를 순차적으로 출력하여 사람이 보기에 동시에 켜진 것처럼 보이도록 구현하였다. 또한 두 개의 스위치를 이용해 동작을 제어한다.SW1 : 카운터 시작 / 정지 토글..
이번 실습에서는 Infineon AURIX TC275의 System Timer Module(STM)을 이용해 주기 인터럽트 기반 LED 신호등 시스템을 구현한다. 단순한 GPIO 토글이 아니라, STM Compare Interrupt를 활용하여 일정 주기(0.5초 Tick)를 생성하고, 이를 기반으로 상태를 전환하는 구조로 설계하였다. STM 인터럽트 핸들러(STM_Int0Handler)에서는 Compare Flag를 클리어하고 다음 인터럽트 시점을 갱신한 뒤, g_tickCnt와 g_state를 이용해 신호등 상태를 순환하도록 구성했다. 상태는 총 3단계로 구성되며, 아래 형태로 동작한다. State 0 : Red LED ONState 1 : Blue LED ONState 2 : Blue LED Bli..
AURIX TC27x 보드에서 ERU(External Request Unit) 기반 인터럽트를 이용해 LED의 blinking을 제어하는 프로그램이다. 기본 동작은 while 루프에서 파란 LED(P10.2)와 빨간 LED(P10.1)를 P10_OMR 레지스터로 지속적으로 토글하여 깜빡이게 하고, 버튼(P02.0, P02.1)이 눌리면 인터럽트가 발생해 blinking을 멈추거나 다시 시작하도록 구성하였다. 인터럽트 서비스 루틴(ISR)에서는 LED를 직접 제어하지 않고, 전역 변수 g_blinkOn을 토글하여 현재 blinking 상태만 변경한다. 메인 루프는 이 플래그 값을 확인해 1일 때만 LED를 토글하고, 0이면 아무 동작도 하지 않는다. 이를 통해 인터럽트는 상태 제어, 메인은 실제 동작 수행..