전체 글 109

(2025-2) Introduction to programming (2) 1. Introcudtion

🎯 수업 목표C++ 프로그래밍의 기초 구조와 사고방식 이해하기프로그래밍의 개념컴퓨터와 프로그램의 관계C++ 언어의 특징컴파일과 실행 과정첫 번째 프로그램 (Hello, World)기본 입출력 구조 (cin, cout)에러와 디버깅문제 해결(problem solving) 사고 익히기🧩 1. 프로그래밍이란?“A program is a set of instructions that tells the computer what to do.”프로그램: 컴퓨터에게 무엇을 어떻게 할지 명령하는 지시문 집합프로그래밍: 인간의 논리를 컴퓨터가 이해할 수 있는 명령어로 바꾸는 과정💡 비유사람에게 “라면 끓여” → 가능컴퓨터에 “라면 끓여” → 불가능→ “냄비에 물 500ml 넣고 끓여라 → 스프 넣어라 → 면 넣고 4분..

시험공부 2025.12.18

(2025-2) 서울과기대 현대사회와 철학 중간고사 정리

1️⃣ 소크라테스의 문답법과 “너 자신을 알라”키워드: 문답법, 무지의 자각, 자기 성찰요약:소크라테스의 문답법(dialectic)은 상대를 설득하기보다 스스로 모순을 깨닫게 하는 대화 방식이다.“너 자신을 알라”는 명제는 자신이 무엇을 모르고 있는지를 아는 데서 출발한다.철학적 질문은 안으로부터의 성찰과 밖으로부터의 비판이 만나는 지점에서 생긴다.지혜란 지식을 소유하는 것이 아니라, 무지를 자각하고 성찰하는 태도다.교수님 포인트: “철학은 안과 밖의 관점을 교차시켜 자기 기만을 깨뜨리는 일.”2️⃣ 플라톤의 현상과 이데아키워드: 현상계, 이데아계, 진리, 본질요약:플라톤은 변하는 감각세계(현상)와 영원불변한 진리의 세계(이데아)를 구분했다.현상은 이데아의 불완전한 그림자이며, 철학의 목표는 이데아를 인..

시험공부 2025.10.18

(매일 BOJ) C++ 18352번 특정 거리의 도시 찾기

이번 문제는 18352번 특정 거리의 도시 찾기이다문제 요약입력N(도시 수), M(도로 수), K(목표 거리), X(시작 도시)M개의 도로: a -> b (단방향)출력X로부터 최단거리가 정확히 K인 도시 번호들을 오름차순으로 출력없다면 -1접근 아이디어dist[v] = 시작점 X에서 v까지의 최단거리를 저장하는 BFS를 수행방문하지 않았던 정점만 방문(dist == -1)거리 갱신 직후 dist[next] == K이면 answer에 담아둔 후 최종적으로 answer를 정렬해 출력하면 끝작성코드#include using namespace std;int N,M,K,X;void BFS(vector> & city,vector & answer);int main (void){ cin >> N >> M >> K..

매일 BOJ 2025.09.03

(매일 BOJ) C++ 14940번 쉬운 최단거리

이번 문제는 14940번 쉬운 최단거리다문제 요약입력 격자: 0 = 벽(못 감), 1 = 지나갈 수 있음, 2 = 시작점출력 규칙:시작점은 0 (거리 0)갈 수 있는 칸은 최단거리도달 불가한 1은 -10은 그대로 0접근법각 칸을 정점, 4방향 인접 칸을 간선으로 보면 무가중치 그래프 최단거리 → BFS가 정답지도(graph) 자체를 거리 저장용으로 덮어쓰기시작점(2)은 0으로 바꾸고 시작이동 가능한 1만 큐에 넣으며 graph[nx][ny] = graph[cur] + 1로 거리 누적BFS 종료 후, 한 번도 방문 안 된 1을 -1로 치환복잡도시간: O(N*M) — 각 칸 최대 한 번씩 큐에 들어간다공간: O(N*M) — 방문배열 / 큐가 격자 크기와 같은 오더거리 배열 dist를 따로 만들지 않고, 한 ..

매일 BOJ 2025.09.02

(매일 BOJ) C++ 5014번 스타트링크

이번 문제는 5014번 스타트링크다문제 요약정점: 각 층 1..F간선: x → x+U, x → x-D (범위 밖은 무시)목표: 시작층 S에서 목표층 G까지 버튼 최소 횟수불가능: 도달 못하면 "use the stairs"접근법이동 비용이 모두 동일(버튼 1회)하므로 무가중치 최단거리 => BFS가 정답이다visited를 거리 배열로 사용해 -1(미방문), 0(시작), … 형태로 관리하면 오프바이원 실수를 예방할 수 있고, U==0 또는 D==0이라도 이미 방문한 층은 다시 넣지 않으므로 무한루프 없이 안전함시간복잡도: 각 층을 최대 한 번 방문 → O(F)공간복잡도: O(F)알고리즘 설계입력으로 F, S, G, U, D를 받는다크기 F+1의 거리배열 visited를 -1로 초기화 후, 시작층 S를 0으로..

매일 BOJ 2025.09.01

(매일 BOJ) C++ 1926번 그림

이번 문제는 1926번 그림이문제 요약세로 x, 가로 y 크기의 2차원 격자에서 값이 1인 칸들을 상하좌우로 연결된 묶음(연결요소)으로 정의한다. 그림(연결요소)의 총 개수와가장 큰 그림의 넓이(포함 칸 수)를 계산하여 출력해야 함접근법모든 칸을 순회하면서 값이 1이고 아직 방문하지 않은 시작점을 발견할 때마다 BFS를 수행하여 해당 연결요소 전체를 탐색한다 BFS 과정에서 방문할 때마다 면적 변수를 1씩 증가시키고, 탐색 종료 시 최대 넓이를 갱신한다. 각 칸은 최대 한 번만 방문하므로 전체 시간 복잡도는 O(x⋅y)가 된다 알고리즘 설계입력으로 x,y 및 x×y 격자를 수신방문 배열을 초기화이중 반복으로 모든 좌표 (i,j)(i, j)(i,j)를 순회graph[i][j]==1 이고 미방문이면, 해당 ..

매일 BOJ 2025.08.29

(매일 BOJ) C++ 7562번 나이트의 이동

이번 문제는 7562번 나이트의 이동이다문제 요약체스판 한 변의 길이 I가 주어지고, 나이트의 시작 좌표 (x, y)와 목표 좌표 (nx, ny)가 주어진다나이트가 시작점에서 목표점까지 최소 몇 번 이동하면 도착하는지 출력테스트케이스가 여러 개 주어진다체스판 좌표는 0 ~ I-1 (열/행 헷갈리지 않게 한 가지 규칙으로만 쓰면 됨)나이트 이동: 8방향(-2,-1), (-2, 1), (-1,-2), (-1, 2), (1,-2), (1, 2), (2,-1), (2, 1)접근법이 문제는 간선 가중치가 모두 1인 격자 최단거리 문제 → BFS가 정석이다dist(혹은 방문 겸 거리 배열)를 -1로 초기화: 미방문 표기시작칸은 0으로 두고 큐에 넣는다큐를 돌며 현재 칸에서 나이트 이동 8방을 확장처음으로 목표칸을 ..

매일 BOJ 2025.08.28

(매일 BOJ) C++ 11725번 트리의 부모 찾기

이번 문제는 트리의 부모 찾기이다문제 요약정점 1을 루트(root) 로 하는 트리가 주어진다. 각 간선은 무방향이며, 정점 수는 N, 간선 수는 N-1목표는 정점 2부터 N까지 각각의 부모 정점을 출력하는 것이다 접근법트리는 연결되어 있고 사이클이 없다 루트(1)에서 한 번 BFS(또는 DFS) 를 돌면서 “처음 방문”한 정점의 부모를 누가 찍었는지 기록하면 끝시작: 1을 큐에 넣고 시작인접 정점 v를 처음 만났다면 parent[v] = u큐가 빌 때까지 반복 → parent[2..N] 출력시간 복잡도는 인접 리스트 기준으로 O(N)이다 작성코드아래 코드는 BFS로 부모를 구한다. 입력 이후 인접 리스트를 정렬해(선택 사항) 작은 번호부터 탐색하도록 했다#include using namespace std..

매일 BOJ 2025.08.27

(매일 BOJ) C++ 16953번 A -> B

이번 문제는 16953번 A -> B 이다문제 요약허용 연산x → 2xx → 10x + 1목표: A에서 시작해 B에 도달하는 최소 단계 수 + 1을 출력 (도달 불가 시 -1)접근법BFS(너비 우선 탐색)시작값 A를 루트로 상태를 확장합니다. 간선 가중치가 모두 1이므로, 처음 B를 만나는 순간의 레벨이 곧 정답이다상태: 현재 값 x간선: x → 2x, x → 10x + 1next > B는 확장할 필요가 없으므로 가지치기방문/거리 관리는 map(또는 unordered_map)으로 처리(참고) 역방향 그리디(B → A) 도 매우 간단하다 B의 끝이 1이면 /10, 아니고 짝수면 /2, 그 외는 실패작성코드#include using namespace std;int BFS(long long a, long l..

매일 BOJ 2025.08.27

(매일 BOJ) C++ 13913번 숨바꼭질 4

이번 문제는 13913번 숨바꼭질 4이다문제 요약N에서 K로 이동할 때 가능한 연산은 x-1, x+1, x*2.모든 연산 비용이 1이므로 가중치가 없는 그래프의 최단거리 문제이고, 정석은 BFS이다 접근법BFS(너비 우선 탐색): 시작점 N에서 한 단계씩 확장하면, 처음 K를 만나는 순간의 깊이가 곧 최단 시간방문 체크: 큐에 삽입(push)할 때 visited[next]=true로 표시해 중복 탐색 방지부모 추적(parent 배열): parent[next] = x로 “어디서 왔는지” 기록해 두고, K를 찾으면 parent를 거슬러 올라가 경로를 복원경로 정방향으로 출력: 역추적은 K → … → N이므로 reverse로 뒤집어 N → … → K로 출력작성코드#include using namespace s..

매일 BOJ 2025.08.22