목록전체 글 (114)
승코딩당당당
이번 글에서는 자동차 바디(Body) 구성 요소 중 ‘의장 부품’ 에 대해 정리해보려고 한다.의장 부품은 차량의 외관 디자인과 실내 사용성, 그리고 사용자 경험(UX) 에 직접적인 영향을 미치는 요소이다. 차체(Body Structure)에 대한 전체적인 구조 설명이 궁금하다면,이전 글인 차체 구조 정리 글을 먼저 참고하면 이해가 더 쉽습니다!!https://xeungcoding.tistory.com/36 [자동차 구조] 바디(Body): 차체자동차는 크게 바디(Body) 와 섀시(Chassis) 로 나눌 수 있다.이 중 바디(Body) 는 차량의 외형을 이루는 부분이자, 탑승자 보호와 공간 형성을 담당하는 구조물이다.바디는 다시 다음과 같이 구분할xeungcoding.tistory.com 🚗 의장 ..
자동차는 크게 바디(Body) 와 섀시(Chassis) 로 나눌 수 있다.이 중 바디(Body) 는 차량의 외형을 이루는 부분이자, 탑승자 보호와 공간 형성을 담당하는 구조물이다.바디는 다시 다음과 같이 구분할 수 있다.차체(Body Structure)의장(Assemble)전기 배선 및 전장 부품이번 글에서는 이 중에서도 바디의 핵심인 ‘차체 구조’ 를 중심으로 정리해보려고 한다. 🚗 차체의 종류 자동차 차체 구조는 크게 두 가지 방식으로 나뉜다.Body on Frame (프레임 바디)Uni-Body (모노코크 바디) 🚚 Body on Frame (프레임 바디)프레임 바디 구조는 마차에서 유래된 방식으로,프레임(Frame) 위에 차체(Body)를 얹는 형태의 구조이다. ✔ 특징:프레임이 차량..
문제[C++] 백준 7568: 덩치 SILVER 5https://www.acmicpc.net/problem/7568 접근 방법이 문제는 사람들의 몸무게와 키가 주어졌을 때, 각 사람의 덩치 등수를 구하는 문제이다. 등수는 단순히 한 가지 기준으로 정렬해서 매길 수 있는 것이 아니라,어떤 사람 A가 사람 B보다 몸무게도 크고 키도 크면 A가 B보다 덩치가 크다고 판단한다.즉, 두 조건을 모두 만족해야 비교가 성립한다. 처음에는 정렬로 풀려고 했지만, 이 방식은 한 기준으로만 줄을 세우게 되어 “둘 다 큰 경우에만 등수가 밀린다”는 조건을 정확히 반영하지 못해 틀렸다..그래서 모든 사람을 서로 비교하는 브루트포스(완전탐색) 방식으로 해결했다. 각 사람 i에 대해, 다른 사람 j가 i보다 몸무게도 크고 키도..
문제[C++] 백준 4796: 캠핑 BRONZE 1https://www.acmicpc.net/problem/4796 접근 방법이 문제는 캠핑장을 사용할 수 있는 규칙이 주어졌을 때, 최대 며칠 동안 캠핑장을 이용할 수 있는지를 계산하는 문제이다.연속 P일 중에서 최대 L일만 캠핑장을 사용할 수 있고총 휴가 기간은 V일이다.먼저 V일을 P일 단위로 나누면, 완전한 주기(V / P)마다 L일씩 캠핑장을 사용할 수 있다.남는 기간(V % P)에 대해서는 L일을 넘길 수 없으므로 min(L, V % P) 만큼만 추가로 사용할 수 있다.따라서 전체 사용 가능한 일수는 다음과 같이 계산된다.L × (V / P) + min(L, V % P) 구현 시 주의할 점남은 날짜에서 사용할 수 있는 최대 일수를 계산할 때 m..
문제[C++] 백준 1931: 회의실 배정 GOLD 5https://www.acmicpc.net/problem/1931 접근 방법이 문제는 하나의 회의실에서 최대한 많은 회의를 진행하기 위해 겹치지 않게 회의를 선택하는 개수의 최댓값을 구하는 문제이다. 핵심 아이디어는 그리디 알고리즘이다.가장 빨리 끝나는 회의를 먼저 선택하면, 이후에 더 많은 회의를 배치할 수 있다. 그래서 각 회의를 (종료 시간, 시작 시간) 형태로 저장한 뒤,종료 시간을 기준으로 오름차순 정렬한다.종료 시간이 같을 경우 시작 시간이 빠른 회의가 먼저 오도록 자동으로 정렬된다.정렬된 회의 목록에서첫 번째 회의를 선택하고이후 회의들 중 시작 시간이 현재 선택된 회의의 종료 시간 이상인 경우만 선택한다.이 과정을 끝까지 반복하면 선택한..
문제[C++] 백준 2468: 안전 영역 SILVER 1https://www.acmicpc.net/problem/2468 접근 방법비의 높이(rain)가 주어졌을 때, 잠기지 않은 영역(안전 영역)의 개수를 세고, 그 개수의 최댓값을 구하는 문제다.핵심은 비의 높이가 바뀔 때마다 지도에서높이 > rain 인 칸들만 “살아있는 땅”으로 보고상하좌우로 연결된 덩어리(연결 요소)의 개수를 DFS/BFS로 세는 것이다.그래서 rain을 0부터 (지도 최대 높이 - 1)까지 변화시키며 매번 탐색하고,각 rain에 대한 안전 영역 개수 중 최댓값을 ret에 저장한다. 구현 시 주의할 점visited 초기화는 매 rain마다 반드시 해줘야 한다. (이전 rain 탐색 흔적이 남으면 오답)탐색 조건은 vect[yy]..
문제[C++] 백준 2667: 단지번호붙이기 SILVER 1https://www.acmicpc.net/problem/2667 접근 방법이 문제는 지도에서 1로 표시된 집들이 상하좌우로 연결되어 있을 때,각 단지(연결 요소) 의 개수와 단지별 집의 수를 구하는 문제이다. 지도는 n × n 크기의 격자이므로, 모든 칸을 순회하면서 아직 방문하지 않은 집(1)을 만나면 BFS를 시작한다.BFS로 연결된 모든 집을 탐색하면 하나의 단지가 완성되며, 탐색 과정에서 방문한 집의 개수를 세어 단지 크기로 저장한다. 이 과정을 전체 지도에 대해 반복한 뒤, 단지의 개수와 각 단지의 크기를 오름차순으로 정렬해 출력하면 된다. 구현 시 주의할 점BFS를 시작할 때 초기 집도 단지 크기에 포함되므로 카운트를 1부터 시작해..
문제[C++] 백준 2331: 반복수열 SILVER 4https://www.acmicpc.net/problem/2331 접근 방법이 문제는 수열을 생성하다가 중복이 처음 발생하는 지점 이전까지의 원소 개수를 구하는 문제이다.수열은 다음 규칙으로 만들어진다.현재 수의 각 자릿수를 P제곱한 값들을 모두 더해 다음 수를 만든다. 이를 구현하기 위해시작 값 a를 벡터 d에 넣고value() 함수를 이용해 다음 값을 계속 생성한다.이미 나온 값인지 빠르게 확인하기 위해 boolean 배열(check) 로 방문 여부를 관리한다.처음으로 중복이 발생하면 수열 생성을 멈춘다.중복된 값이 처음 등장했던 위치를 찾아, 그 인덱스가 곧 정답이 된다. 구현 시 주의할 점자릿수 계산은 % 10과 / 10을 이용해 하나씩 분리..
문제[C++] 백준 10451: 순열 사이클 SILVER 3https://www.acmicpc.net/problem/10451 접근 방법이 문제는 순열이 주어졌을 때, 그 순열에 포함된 사이클의 개수를 구하는 문제이다.각 숫자는 정확히 하나의 숫자를 가리키므로, 전체 구조는 방향 그래프이며 각 연결 요소는 반드시 하나의 사이클을 포함한다. 그래프를 graph[i] = 다음 정점 형태로 저장한 뒤,아직 방문하지 않은 정점에서 DFS를 시작하면 하나의 사이클을 전부 탐색할 수 있다.따라서 DFS를 한 번 시작할 때마다 사이클의 개수를 1 증가시키면 된다. (cnt++) 구현 시 주의할 점이 문제는 일반 그래프가 아니라 순열 그래프이므로,한 정점에서 갈 수 있는 다음 정점이 항상 하나뿐이라는 점을 이용하면 ..
문제[C++] 백준 1167: 트리의 지름 GOLD 2https://www.acmicpc.net/problem/1167 접근 방법백준 1167번은 가중치가 있는 트리의 지름(가장 긴 경로의 길이) 을 구하는 문제이다.이 문제의 핵심 아이디어는 다음과 같다. 임의의 노드에서 가장 먼 노드는, 트리 지름을 이루는 두 노드(양 끝점) 중 하나이다.(즉, 한 번 멀리 찍고 → 그 점에서 다시 가장 멀리 찍으면 지름이 나온다.)그래서 BFS를 두 번 사용했다.임의의 노드(코드에서는 1번)에서 BFS → 가장 먼 노드 M_index 찾기M_index에서 다시 BFS → 최댓값이 트리의 지름 상세 아이디어1) 트리 저장 방식tree[node]에 (connect, value) 형태로 인접 리스트를 저장해 가중치 간선..