HEADLINE
2024 예술적인 소프트웨어 프로젝트 : Project GK
코딩 테스트 대비
[BOJ C++] 3954번 - Brainf**k 인터프리터
[BOJ C++] 3954번 - Brainf**k 인터프리터
코딩 테스트
2025.12.11 15:51
[삼성 A형 기출 문제]백준 3954번 - Brainf**k 인터프리터문제더보기Brainf**k 프로그램이 주어졌을 때, 이 프로그램이 끝나는지, 무한 루프에 빠지는지 알아내는 프로그램을 작성하시오.무한 루프란, 특정 시점부터 탈출하지 않고 무한히 반복 실행되는 루프를 말한다.Brainf**k 인터프리터는 정수를 담는 하나의 배열(unsigned 8-bit 정수)과, 그 배열의 칸 하나를 가리키는 포인터로 이루어져 있다. Brainf**k 프로그램은 다음과 같이 8개의 명령어로 이루어져 있다.-포인터가 가리키는 수를 1 감소시킨다. (modulo 28)+포인터가 가리키는 수를 1 증가시킨다. (modulo 28)포인터를 왼쪽으로 한 칸 움직인다.>포인터를 오른쪽으로 한 칸 움직인다.[만약 포인터가 가리키..
[BOJ C++] 17281번 - ⚾
[BOJ C++] 17281번 - ⚾
코딩 테스트
2025.12.11 15:15
[삼성 A형 기출 문제]백준 17281번 - ⚾문제더보기⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종료되고, 두 팀이 공격과 수비를 서로 바꾼다.두 팀은 경기가 시작하기 전까지 타순(타자가 타석에 서는 순서)을 정해야 하고, 경기 중에는 타순을 변경할 수 없다. 9번 타자까지 공을 쳤는데 3아웃이 발생하지 않은 상태면 이닝은 끝나지 않고, 1번 타자가 다시 타석에 선다. 타순은 이닝이 변경되어도 순서를 유지해야 한다. 예를 들어, 2이닝에 6번 타자가 마지막 타자였다면, 3이닝은 7번 타자부터 타석에 선다.공격은 투수가 던진 공을 타석에 있는 타자가 치는 것이..
[BOJ C++] 17136번 - 색종이 붙이기
[BOJ C++] 17136번 - 색종이 붙이기
코딩 테스트
2025.12.11 13:10
[삼성 A형 기출 문제]백준 17136번 - 색종이 붙이기문제더보기과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다.색종이를 크기가 10×10인 종이 위에 붙이려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 0 또는 1이 적혀 있다. 1이 적힌 칸은 모두 색종이로 덮여져야 한다. 색종이를 붙일 때는 종이의 경계 밖으로 나가서는 안되고, 겹쳐도 안 된다. 또, 칸의 경계와 일치하게 붙여야 한다. 0이 적힌 칸에는 색종이가 있으면 안 된다.종이가 주어졌을 때, 1이 적힌 모든 칸을 붙이는데 필요한 색종이의 최소 개수를 구해보자.입력더보기총 10개의 줄에..
[BOJ C++] 17406번 - 배열 돌리기 4
[BOJ C++] 17406번 - 배열 돌리기 4
코딩 테스트
2025.12.10 16:17
[삼성 A형 기출 문제]백준 17406번 - 배열 돌리기 4문제더보기크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 값은 4이다.1 2 32 1 14 5 6배열은 회전 연산을 수행할 수 있다. 회전 연산은 세 정수 (r, c, s)로 이루어져 있고, 가장 왼쪽 윗 칸이 (r-s, c-s), 가장 오른쪽 아랫 칸이 (r+s, c+s)인 정사각형을 시계 방향으로 한 칸씩 돌린다는 의미이다. 배열의 칸 (r, c)는 r행 c열을 의미한다.예를 들어, 배열 A의 크기가 6×6이고, 회전 연산이 (3, 4, 2)인 경우에는 아래 그림과 같이 회전하..
[BOJ C++] 17135번 - 캐슬 디펜스
[BOJ C++] 17135번 - 캐슬 디펜스
코딩 테스트
2025.12.08 17:21
[삼성 A형 기출 문제]백준 17135번 - 캐슬 디펜스문제더보기캐슬 디펜스는 성을 향해 몰려오는 적을 잡는 턴 방식의 게임이다. 게임이 진행되는 곳은 크기가 N×M인 격자판으로 나타낼 수 있다. 격자판은 1×1 크기의 칸으로 나누어져 있고, 각 칸에 포함된 적의 수는 최대 하나이다. 격자판의 N번행의 바로 아래(N+1번 행)의 모든 칸에는 성이 있다.성을 적에게서 지키기 위해 궁수 3명을 배치하려고 한다. 궁수는 성이 있는 칸에 배치할 수 있고, 하나의 칸에는 최대 1명의 궁수만 있을 수 있다. 각각의 턴마다 궁수는 적 하나를 공격할 수 있고, 모든 궁수는 동시에 공격한다. 궁수가 공격하는 적은 거리가 D이하인 적 중에서 가장 가까운 적이고, 그러한 적이 여럿일 경우에는 가장 왼쪽에 있는 적을 공격한다..
[BOJ C++] 17070번 - 파이프 옮기기 1
[BOJ C++] 17070번 - 파이프 옮기기 1
코딩 테스트
2025.12.05 16:00
[삼성 A형 기출 문제]백준 17070번 - 파이프 옮기기 1문제더보기유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다.오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다.파이프는 회전시킬 수 있으며, 아래와 같이 3가지 방향이 가능하다.파이프는 매우 무겁기 때문에, 유현이는 파이프를 밀어서 이동시키려고 한다. 벽에는 새로운 벽지를 발랐기 때문에, 파이프가 벽을 긁으면 안 된다. 즉, 파이프는 항상..
[BOJ C++] 16637번 - 괄호 추가하기
[BOJ C++] 16637번 - 괄호 추가하기
코딩 테스트
2025.11.29 10:45
[삼성 A형 기출 문제]백준 16637번 - 괄호 추가하기문제더보기길이가 N인 수식이 있다. 수식은 0보다 크거나 같고, 9보다 작거나 같은 정수와 연산자(+, -, ×)로 이루어져 있다. 연산자 우선순위는 모두 동일하기 때문에, 수식을 계산할 때는 왼쪽에서부터 순서대로 계산해야 한다. 예를 들어, 3+8×7-9×2의 결과는 136이다.수식에 괄호를 추가하면, 괄호 안에 들어있는 식은 먼저 계산해야 한다. 단, 괄호 안에는 연산자가 하나만 들어 있어야 한다. 예를 들어, 3+8×7-9×2에 괄호를 3+(8×7)-(9×2)와 같이 추가했으면, 식의 결과는 41이 된다. 하지만, 중첩된 괄호는 사용할 수 없다. 즉, 3+((8×7)-9)×2, 3+((8×7)-(9×2))은 모두 괄호 안에 괄호가 있기 때문에..
[BOJ C++] 23289번 - 온풍기 안녕!
[BOJ C++] 23289번 - 온풍기 안녕!
코딩 테스트
2025.11.29 06:09
[삼성 SW 역량 테스트 기출 문제]백준 23289번 - 온풍기 안녕!문제더보기유난히 추운 날씨가 예상되는 이번 겨울을 대비하기 위해 구사과는 온풍기를 설치하려고 한다. 온풍기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사과는 뛰어난 코딩 실력을 이용해 각 칸 (r, c)의 온도를 실시간으로 모니터링하는 시스템을 개발했다. (r, c)는 r행 c열을 의미한다.구사과의 성능 테스트는 다음과 같은 작업이 순차적으로 이루어지며, 가장 처음에 모든 칸의 온도는 0이다. 문제의 그림에서 빈 칸은 온도가 0인 칸을 의미한다.집에 있는 모든 온풍기에서 바람이 한 번 나옴온도가 조절됨온도가 1 이상인 가장 바깥쪽 칸의 온도가 1씩 감소초콜릿을 하나 먹는..
[BOJ C++] 23291번 - 어항 정리
[BOJ C++] 23291번 - 어항 정리
코딩 테스트
2025.11.27 11:34
[삼성 SW 역량 테스트 기출 문제]백준 23291번 - 어항 정리문제더보기마법사 상어는 그동안 배운 마법을 이용해 어항을 정리하려고 한다. 어항은 정육면체 모양이고, 한 변의 길이는 모두 1이다. 상어가 가지고 있는 어항은 N개이고, 가장 처음에 어항은 일렬로 바닥 위에 놓여져 있다. 어항에는 물고기가 한 마리 이상 들어있다. 은 어항 8개가 바닥 위에 놓여있는 상태이며, 칸에 적힌 값은 그 어항에 들어있는 물고기의 수이다. 편의상 어항은 정사각형으로 표현했다.어항을 한 번 정리하는 과정은 다음과 같이 이루어져 있다.먼저, 물고기의 수가 가장 적은 어항에 물고기를 한 마리 넣는다. 만약, 그러한 어항이 여러개라면 물고기의 수가 최소인 어항 모두에 한 마리씩 넣는다. 위의 예시의 경우 물고기의 수가 가장..
[BOJ C++] 5373번 - 큐빙
[BOJ C++] 5373번 - 큐빙
코딩 테스트
2025.11.23 05:34
[삼성 SW 역량 테스트 기출 문제]백준 5373번 - 큐빙문제더보기루빅스 큐브는 삼차원 퍼즐이다. 보통 루빅스 큐브는 3×3×3개의 작은 정육면체로 이루어져 있다. 퍼즐을 풀려면 각 면에 있는 아홉 개의 작은 정육면체의 색이 동일해야 한다.큐브는 각 면을 양방향으로 90도 만큼 돌릴 수 있도록 만들어져 있다. 회전이 마친 이후에는, 다른 면을 돌릴 수 있다. 이렇게 큐브의 서로 다른 면을 돌리다 보면, 색을 섞을 수 있다.이 문제에서는 루빅스 큐브가 모두 풀린 상태에서 시작한다. 윗 면은 흰색, 아랫 면은 노란색, 앞 면은 빨간색, 뒷 면은 오렌지색, 왼쪽 면은 초록색, 오른쪽 면은 파란색이다.루빅스 큐브를 돌린 방법이 순서대로 주어진다. 이때, 모두 돌린 다음에 가장 윗 면의 색상을 구하는 프로그램을..
2024 SWF : Project RM
[2024 SWF] Project RM 개발일지 #4
[2024 SWF] Project RM 개발일지 #4
Project RM
2024.09.02 22:38
이번에는... 아주 큰 발전을 해냄과 동시에 아주 크게 건강을 해쳤다.'만들래' 라는 인디게임 플랫폼에서 주최하는 10분 게임 콘테스트에 Project RM의 데모를 출품하기로 하여 일주일간 엄청난 개발 러쉬에 들어갔다.로고 제작게임의 성격을 결정하는 로고를 제작했다.게임이 어둡고, 망한 도시를 배경으로 하고 있어서 Dystopia라는 영어단어를 가져왔고, 그 안에서 사는 사람이라서 -ian을 붙여 Dystopian이라는 게임 이름을 정하게 되었다.그리고 도트 게임이기에 도트로 제작했고, 리듬 게임이기에 악보같은 디자인도 추가하였다. 그렇게 탄생한 로고는...이런 로고가 탄생하게 되었다!느낌 가는대로 손 닿는대로 만든 로고였는데 팀원들에게 호평을 받아서 다행이었다.튜토리얼 씬 완성저번에 하고있던 튜토리얼..
[2024 SWF] Project RM 개발일지 #3
[2024 SWF] Project RM 개발일지 #3
Project RM
2024.08.17 11:49
이번 주에는 전에 했던 대사 말하기랑 대사 진행을 가지고 본격적으로 튜토리얼 씬 제작에 들어갔다.플레이어 코루틴플레이어 이동 코루틴전에 대사 말하기를 코루틴으로 구현했는데,  이걸 이용해서 플레이어를 이동시켜주는 것도 코루틴으로 구현해서 직접 조작하지 않고도 플레이어가 움직이도록 했다. IEnumerator PlayerMoveX(float destinationX, float moveSpeed) { int direction = 0; if (player.transform.position.x destinationX) { direction = -1; player.transform.localScale = new Vector3..
[2024 SWF] Project RM 개발일지 #2
[2024 SWF] Project RM 개발일지 #2
Project RM
2024.08.10 00:44
이번에는 전에 했던 적을 조금 다듬었고, 튜토리얼 씬 제작에 들어갔다.튜토리얼 씬 개발우선 내가 구상한 튜토리얼 씬에는, 외부 도시를 보여주는 배경이 원근감 효과를 주며 지나가고, NPC 하나가 말을 걸며 조작법과 게임의 컨셉을 알려주는 요소가 있었다. 구상이 얼추 끝나고 바로 개발에 들어갔다.Parallax 배경 구현내가 생각하고있던 원근감 있는 배경이 Parallax Background라는 용어로 존재하고있었다.작년에는 Parallax말고 원근감을 달라고 구글을 잡고 흔들었는데 알고보니 같은 것이었다...아무튼 그래서 Parallax Background는 간단하게 설명하면, 가까이 있는 배경사물은 빠르게 움직이고, 먼 배경사물일수록 천천히 움직이게 하여 원근감을 주는 기법이다.이것을 코드로 해석하면,..
[2024 SWF] Project RM 개발일지 #1
[2024 SWF] Project RM 개발일지 #1
Project RM
2024.07.25 23:18
이번 학기에 뜻이 맞는 동기 팀원들을 모아 소프트웨어 페스티벌에 주니어 부문으로 나갈 팀을 꾸렸다.내가 팀장을 맡게 되었고, 기획자이자 개발자이자 작곡가로도 참여하게 되었다.작곡가가 왜 있냐면... 리듬게임 프로젝트를 하고있기 때문이다.개발을 시작한지는 한 달 정도 되었다. 그래서 진척 사항이 조금 많다.기획 완료 원래 1인 프로젝트로 진행하려고 했던 기획이 있었는데, 그걸 참고해서 이번 프로젝트의 기획을 완료했다.간단하게 설명하자면,던전 속에서 펼쳐지는 리듬 액션 로그라이크리듬에 맞춰서 공격을 하고, 던전 안의 있는 적들을 물리치며 게임을 진행한다.적 구현 완료여기에 나오는 적들은 모두 리듬에 맞춰 공격을 하기 때문에, 일단 키를 눌러서 공격을 하게 한 후, 나중에 리듬 노트 쪽이 구현이 완료되면 그 ..
싱글벙글 사이드 프로젝트
[2024-2 겜엔기] Project AS 개발일지 #4
[2024-2 겜엔기] Project AS 개발일지 #4
Side Project
2024.11.01 23:30
저번에는 플레이어의 기본 공격을 구현했었다.그래서 이번에는 플레이어의 스킬을 구현했다.스킬은 총 4가지가 있고, 그 중 일단 Q스킬 1가지만 중간 발표 전까지 구현하는 것이 목표였는데,과연 목표를 달성했을까?적 탐지설명하기에 앞서, Q스킬은 롤의 카이사 Q스킬 처럼 유도탄을 발사해 데미지를 입히는 것이다.그러려면, 자신 주위의 적들이 얼마나 있는지 일단 파악하여 그 적들을 변수든 리스트든 어떤 방식으로든 저장해야한다. 나는 가장 간단한 방법을 선택했다.플레이어에게 탐지 범위만큼의 트리거 형식의 콜리전을 주고, 거기에 들어오면 리스트에 넣었다가 다시 나가면 리스트에서 지워주는 것이다.그리고, 적을 저장하기 위해 액터 오브젝트 리스트 변수를 하나 만들어 거기에 저장과 삭제를 해줬다.여기에 새로 사용한 노드 ..
[2024-2 겜엔기] Project AS 개발일지 #3
[2024-2 겜엔기] Project AS 개발일지 #3
Side Project
2024.10.07 22:29
저번 개발때 플레이어 이동을 구현해서, 이번에는 플레이어 공격을 구현해보았다.단순하긴 해도 애니메이션을 직접 블루프린트 내에서 다루는 경험은 이번이 처음이라 조금 헤매기도 한 것 같다. 그럼 결과물은 어떨까?Hit ScanHit Scan(히트 스캔)이란, FPS에서 사용되는 공격 판정 방식이다.보통 총기류로 공격을 하면 현실에서는 투사체가 날아가면서 대상을 공격하지만, 게임에서는 연산 속도가 있기 때문에 현실만큼 빠른 속도를 적용한 투사체를 날리면 그 속도를 연산 속도가 못따라가서 판정이 잘 안되는 경우가 있다.이럴 때에는 투사체를 날리는 것 대신, 공격 명령이 들어오면 그 즉시 바라보는 대상에게 피격 판정을 내려버리는 시스템을 사용하는데, 이것이 히트 스캔이다.예를 들자면 오버워치의 위도우메이커, 캐서..
[2024-2 겜엔기] Project AS 개발일지 #2
[2024-2 겜엔기] Project AS 개발일지 #2
Side Project
2024.09.29 01:46
저번에 개발을 위한 모든 세팅을 끝내고, 이번에는 진짜 개발에 착수했다.이번에 목표로 한 것은 플레이어의 이동을 완벽히 하는 것이다. 목표를 과연 달성했을까?Aim OffsetFPS 장르이기에 에임 구현은 무엇보다도 필수이다. 그리고 투사체 구현은 나중이기 때문에, 일단 플레이어 캐릭터가 내가 마우스를 돌리는 시점을 보게 하는 것을 구현해야함을 느꼈다.구글에 정말 여러가지 검색을 한 끝에, 이러한 것을 Aim Offset이라고 부른다는것을 알게 되었다.Aim Offset을 정확히 설명하자면, '캐릭터의 상반신 움직임이 에임을 따라오게 하는 것' 이다.그래서, 에셋에서 기본 제공되는 걸 이용해서 에임을 따라오게끔 해줬다.일단 이 블루프린트는 에셋에서 주는 기본 애니메이션 BP이다. 근데, 그냥 실행하면 에..
[2024-2 겜엔기] Project AS 개발일지 #1
[2024-2 겜엔기] Project AS 개발일지 #1
Side Project
2024.09.29 00:02
2학년 2학기가 되면서 게임엔진기초 라는 수업을 듣게 되었다. 이 수업에서는 팀을 꾸려서 언리얼 엔진을 이용한 팀 프로젝트를 제작하는 것이 최종 과제이다.그래서, 2주차 수업 때 나를 포함해 5명으로 이루어진 팀을 배정받고 바로 기획 후에 개발에 들어갔다.지금은 개발이 조금이나마 된 상태이지만, 개발 전에도 할 이야기가 많아서 두번에 나눠서 쓰려고 한다.그리고, 이 프로젝트의 개발일지는 종강때가지 계속 써볼 것이다.그렇다면 시작~기획 완료우선, 팀원중에 언리얼에 친숙한 사람이 없어서 기획의 볼륨은 작게 가져가고자 했다. 조금만 크게 가져가도 구현에 어려움을 배로 겪을 것이 눈에 훤했다.그래서 구현할 것들이 얼마 없고, 제일 몰입감있게 플레이할 수 있는 FPS 전투 형식을 채용했다.상세 장르는 수업시간에 ..
[Side Project] Project KS 개발일지
[Side Project] Project KS 개발일지
Side Project
2024.09.09 22:09
전에 만들었던 Project RM을 만들래에서 주최한 10분콘에 냈었는데, 사실 또 하나 더 냈다..이 프로젝트가 10분콘을 노리고 만든 게임이고, 일주일만에 엄청난 성과를 이뤄낸 플젝이기도 했다.다른 프로젝트를 같이하고있는 선배와 동기들로 구성된 4명 팀이었고, 여기에서 나는 기획, 서브 개발, 아트, 사운드의 역할로써 참여했다. (또 다함) (그 선배는 바로 건호형)게임 기획또 같이 프로젝트를 하는 선배에게는 꿈이 하나 있었다... 바로 네크로맨서가 주인공인 게임을 만드는 것이다.그래서 초기 기획을 할 때 여러 컨셉들과 함께 네크로맨서가 주인공인 기획을 하나 만들어두었다.그리고 기획을 선배에게 주자마자 빛의 속도로 네크로맨서 기획이 선정되었다. ㅋㅋㅋㅋ 이제 그 기획을 간단히 설명하자면, 네크로맨싱 ..
완전 기초 블렌더
[#11] 완전 기초부터 시작하는 블렌더
[#11] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.14 15:53
1. 렌더링 방법 블렌더가 렌더링을 하는 방법은 두가지가 있다. Cycles : 렌더링 속도가 느린 대신 결과물의 퀄리티가 뛰어나다. EEVEE : 렌더링 속도가 거의 실시간 급이지만 빛과 그림자 표현이 투박하고 퀄리티가 Cycles보다 떨어지는 감이 있다. 그래서, EEVEE를 사용하여 씬에서 렌더링 되는 것을 보고, Cycles를 사용해 최종 렌더링을 하는것이 효율적이다. 2. Lighting 특정 부분에 광원을 만드는 작업이다. 우측 탭에 지구 모양을 클릭하면, 블렌더에 전반적으로 적용되는 월드 조명을 선택할 수 있다. 기본값은 1로 설정되어있는데, 공기는 발광하지 않으니 0으로 설정해준다. 그리고, Light의 종류는 네가지가 있다. 우측 탭의 전구 모양을 클릭하면 전구의 종류와 색상, 밝기를 조..
[#10] 완전 기초부터 시작하는 블렌더
[#10] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.14 15:09
1. Texture Paint Texture Paint는 질감 표현을 손으로 직접 그리게 해 주는 기능이다. Shader Editor를 불러온 후, Image Texture를 하나 생성해 Base Color와 연결해준다. 그 후에 New 버튼을 눌러 새로운 이미지를 생성한다. 그렇게 생성한 것을 불러온 후, 오브젝트를 선택하고 U키를 눌러 Unwrap을 해준다. 그렇게 되면 Image Editor 탭에 전개도가 생긴다. 그 위에 브러쉬로 색을 입히면, 전개도에 칠해진대로 오브젝트에 적용된다. 그리고 이런 이미지는 저장해주어야 제대로 저장되므로, Alt + S를 눌러 저장해준다.우측 창의 스패너모양을 누르면 브러쉬 설정이 가능하고, Texture Mask를 적용하면 만들어둔 텍스쳐를 불러와 그 질감대로 칠..
[#9] 완전 기초부터 시작하는 블렌더
[#9] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.14 14:17
1. 오브젝트 만들기 1-1. 초콜릿 Cube 오브젝트를 하나 생성해서, 납작하게 만들어 초콜릿모양으로 만들었다. Array Modifier (배열) 특정 방향으로 오브젝트를 복사해주는 것이다. 이것을 이용해 초콜릿 패턴을 만들었다. 1-2. 빵 UV Sphere를 하나 생성한 후, 반을 날려 반 구로 만들었다. 그 후, Subdivision Surface를 적용해 부드럽게 해주었고, Loop cut을 조절해 펑퍼짐한 느낌을 주었다. Proportional Editing 뷰포트의 상단에, 동그라미가 여러개 있는 표시가 있는데, 그걸 누르면 Proportional Editing을 활성화할 수 있다. 그리고 점을 하나 잡고 움직여보면, 근처에 있는 것들도 같이 따라와 자연스럽게 늘리고 줄일 수 있다. 이것을..
[#8] 완전 기초부터 시작하는 블렌더
[#8] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.14 13:17
1. PBR Texture (Physically Based Redering) 1-1. PBR Texture란? 2D 면의 형태를 띈 물체를 입체감이 있게 재질을 표현하는 것이다. 이것을 사용하기 위해서는 외부 사이트에서 PBR Texture를 다운받아야 한다. ambientCG 바로가기 텍스쳐를 다운받을 때에는 .png 파일로 다운받는 것이 제일 적절하다. 화질도 설정할 수 있는데, 8K 화질은 1기가 가까이 돼서 4K로 다운받았다. Color.png는 색상에 관한 정보를 담고 있고, Roughness.png 재질의 거친 정도를 표현할 때 사용된다. Normal~~.png는 요철, 즉, 재질의 높이에 대한 정보를 담고 있다. Displacement.png는 높이에대한 정보를 담고 있는데, 이것은 Mesh..
[#7] 완전 기초부터 시작하는 블렌더
[#7] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 23:11
1. 오브젝트 Scale 조정 N키를 누르면 Viewport 오른쪽에 메뉴가 생긴다. 여기서 오브젝트를 선택하면 Item 탭이 생기는데, 여기서 Dimensions에 오브젝트의 크기가 미터단위로 나와있다. 따라서 이걸 보며 오브젝트의 크기를 조정해주어야 한다. 나의 경우는 컵의 크기가 3미터가 넘어가서, Z축이 0.1미터가 되도록 줄여주었다. 2. 바닥 생성 후 오브젝트 놓기 Plain을 생성 후, 컵과 접시를 이 위에 놓아주어야 한다. 뷰포트 상단에 있는 자석아이콘을 누르면, 오브젝트의 움직임이 1미터 단위로 보정되어서 움직여진다. 자석 옆에 있는 아이콘을 누르면, 몇가지 옵션이 뜨는데 초기값은 Increment이다. 이것을 Face로 바꾼 후 컵과 접시를 Plain 위에서 움직이면 Plain에 딱 붙..
[#6] 완전 기초부터 시작하는 블렌더
[#6] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 21:52
숙제로 했던 접시 만들기는 거의 자유 주제라 풀이에 어긋나지 않아 생략하였다. 1. Modifier 뷰포트 오른쪽에 있는 창에서 아래 있는 것이 Properties 탭이고, 거기서 스패너 모양의 버튼을 누르면 Modifier를 제어할 수 있다. 우선, 컵에 Subdivison Surface라는 Modifier를 적용했다. Subdivision Surface에 두 속성이 있다. Levels Viewport : 이 Modifier를 적용하는 정도 Render : Viewport에서는 적용되지 않고, 렌더링할 경우에 적용되는 Modifier의 정도 보통 이 두 값을 같게 둔다. 하지만, 컵이 더 부드러워야한다...! 그렇다고 Levels Viewport값을 크게주면 안된다. 블렌더가 하얗게 질려버린다. Lev..
[#5] 완전 기초부터 시작하는 블렌더
[#5] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 21:09
이번 강의부터는 본격적인 모델링 작업에 들어갈 것이다. 1. 레퍼런스 이미지 생성 만들 물체의 적절한 이미지를 찾은 후, Shift + A를 눌러 오브젝트 생성 탭으로 들어간다. 그 후, Image > Reference를 눌러 저장해둔 이미지를 불러온다. 그러면 이렇게 레퍼런스 이미지가 불러와진다. 2. 모델링 2-1. 둥글게 표현 모델링하려는 머그컵은 아래로 갈수록 둥글게 좁아지는 형태를 띄고 있다. 그래서 밑면을 줄여주었는데, 이대로는 그냥 직선으로 떨어지는 머그컵이 되어버린다. 그래서 Loop cut을 이용해 편집점을 추가해주어야 한다. Loop cut에 들어가서, 노란 선이 나올 때, 휠을 굴리거나 숫자를 입력하여 Loop cut의 개수를 지정할 수 있다. 이상태로 생성된 편집점을 조절해 머그컵과..
[#4] 완전 기초부터 시작하는 블렌더
[#4] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 18:56
1. L-I-E L-I-E는 Object Mode의 G-R-S와 같이 Edit Mode의 주요 기능 세개를 묶은 것이다. 1-1. Loop cut Loop cut은 오브젝트를 고리모양으로 자르는 기능이다. Edit Mode에 진입한 후, Ctrl + R을 누르면 Loop cut에 진입하고, 그 상태에서 마우스를 오브젝트 모서리에 가져다 대면 노란색 선이 생긴다. 이상태로 좌클릭을 하게 되면 노란색 선이 주황색으로 바뀌고, 그 선이 마우스를 따라 움직여 Loop cut을 어디에 할지 정할 수 있다. 이 때 좌클릭을 누르면 주황색 선이 있는 곳에 Loop cut이 생기고, 우클릭을 누르면 정가운데에 생긴다. Loop cut을 실행한 후에는 점과 선만 생기고 아무일도 안일어나는데, 이것이 핵심 기능이다. Lo..
[#3] 완전 기초부터 시작하는 블렌더
[#3] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 17:17
1. 숙제 풀이 저번 강의에서 받았던 숙제의 풀이를 보며 고칠 것, 몰랐던 것들을 적어보았다. 1-1. 오브젝트를 기준으로 회전 특정 오브젝트를 편집할 때 시점을 돌리면 그냥 돌려져서 오브젝트를 다시 찾아야하는 불편함이 있었는데, 키패드의 .키를 누르면 해당 오브젝트를 줌 인해서 볼 수 있고, 시점이 회전되는 기준점또한 오브젝트에 맞춰진다. 1-2. 특정 각도로 오브젝트 회전 오브젝트 (특히 저번 숙제에서의 고드름모양)를 회전할 때, R키를 누른 후 회전하면 정확한 각도를 맞출 수 없다. 이 때, R키를 누른 후 키보드로 회전시킬 각도를 입력하면 그 각도만큼 오브젝트가 회전된다. 숙제에서 45도로 회전된 상자를 그냥 눈대중으로 45도쯤 회전시켜 완성했었는데, 이걸 쓰면 쉬울 것 같다. 1-3. 오브젝트 ..
[#2] 완전 기초부터 시작하는 블렌더
[#2] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 14:11
1. Object Mode Object Mode는 오브젝트 자체를 다루는 모드 (하나의 고체로 보는 모드)이고, 이와 반대되는 모드로 Edit Mode(다음 강의)가 있는데 이는 오브젝트의 요소 (점, 선, 면)을 다루는 모드이다. 1-1. 요소 선택 좌클릭으로 요소를 선택하고, A키를 눌러 Viewport에 있는 모든 오브젝트를 선택할 수 있다. A키를 두번 빠르게 누르면 전체선택을 해제할 수 있다. 1-2. G-R-S Grab : 오브젝트 이동 오브젝트를 선택하고 G키를 누르면 마우스 커서 모양이 바뀌면서 오브젝트가 마우스를 따라 움직인다. 좌클릭을 하여 변경사항을 저장할 수 있고, 우클릭을 눌러 취소할 수 있다. Rotate : 오브젝트 회전 오브젝트를 선택하고 R키를 누르면 마우스 커서 모양이 바..
[#1] 완전 기초부터 시작하는 블렌더
[#1] 완전 기초부터 시작하는 블렌더
블렌더
2024.01.13 12:10
3D 모델링의 필요성을 느껴서, 블렌더를 시작해보기로 했다. 1. 블렌더 설치 블렌더 공식 사이트로 가서 블렌더 최신버전을 다운로드 한다. 따로 설정해줄 것은 없고, 그냥 설치하면 된다. 언어 설정은 영어로 진행한다. 2. Viewport 블렌더를 처음 실행하면 나오는 그리드가 쳐진 회색 화면을 Viewport라고 한다. 마우스 휠 클릭을 한 후 움직이면 원하는 각도에서 물체를 볼 수 있다. Shift + 휠 클릭으로 시점 고정 후 평행이동을 할 수 있다. 물론 줌 인 / 아웃 기능은 휠을 굴리면 된다. 그리고 특정 시점 (위나 옆 같은)에서 보게 할 수도 있는데, 이게 키보드의 키패드로 이루어진다. 하지만 내가 쓰고 있는 키보드 두개 모두 키패드가 없다. 어어... 그럼 못하는거예요...? 할 수 있다..
전체 글
[BOJ C++] 17471번 - 게리맨더링
카테고리 없음2025.12.13 09:39[BOJ C++] 17471번 - 게리맨더링

[삼성 A형 기출 문제]백준 17471번 - 게리맨더링문제더보기백준시의 시장 최백준은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 최백준은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름도 백준시로 변경했다. 이번 선거에서는 최대한 공평하게 선거구를 획정하려고 한다.백준시는 N개의 구역으로 나누어져 있고, 구역은 1번부터 N번까지 번호가 매겨져 있다. 구역을 두 개의 선거구로 나눠야 하고, 각 구역은 두 선거구 중 하나에 포함되어야 한다. 선거구는 구역을 적어도 하나 포함해야 하고, 한 선거구에 포함되어 있는 구역은 모두 연결되어 있어야 한다. 구역 A에서 인접한 구역을 통해서 구역 B로 갈 수 있을 때, 두 구역은 연결되어 있다고 한다. 중간에 ..

[BOJ C++] 3954번 - Brainf**k 인터프리터
코딩 테스트2025.12.11 15:51[BOJ C++] 3954번 - Brainf**k 인터프리터

[삼성 A형 기출 문제]백준 3954번 - Brainf**k 인터프리터문제더보기Brainf**k 프로그램이 주어졌을 때, 이 프로그램이 끝나는지, 무한 루프에 빠지는지 알아내는 프로그램을 작성하시오.무한 루프란, 특정 시점부터 탈출하지 않고 무한히 반복 실행되는 루프를 말한다.Brainf**k 인터프리터는 정수를 담는 하나의 배열(unsigned 8-bit 정수)과, 그 배열의 칸 하나를 가리키는 포인터로 이루어져 있다. Brainf**k 프로그램은 다음과 같이 8개의 명령어로 이루어져 있다.-포인터가 가리키는 수를 1 감소시킨다. (modulo 28)+포인터가 가리키는 수를 1 증가시킨다. (modulo 28)포인터를 왼쪽으로 한 칸 움직인다.>포인터를 오른쪽으로 한 칸 움직인다.[만약 포인터가 가리키..

[BOJ C++] 17281번 - ⚾
코딩 테스트2025.12.11 15:15[BOJ C++] 17281번 - ⚾

[삼성 A형 기출 문제]백준 17281번 - ⚾문제더보기⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종료되고, 두 팀이 공격과 수비를 서로 바꾼다.두 팀은 경기가 시작하기 전까지 타순(타자가 타석에 서는 순서)을 정해야 하고, 경기 중에는 타순을 변경할 수 없다. 9번 타자까지 공을 쳤는데 3아웃이 발생하지 않은 상태면 이닝은 끝나지 않고, 1번 타자가 다시 타석에 선다. 타순은 이닝이 변경되어도 순서를 유지해야 한다. 예를 들어, 2이닝에 6번 타자가 마지막 타자였다면, 3이닝은 7번 타자부터 타석에 선다.공격은 투수가 던진 공을 타석에 있는 타자가 치는 것이..

[BOJ C++] 17136번 - 색종이 붙이기
코딩 테스트2025.12.11 13:10[BOJ C++] 17136번 - 색종이 붙이기

[삼성 A형 기출 문제]백준 17136번 - 색종이 붙이기문제더보기과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다.색종이를 크기가 10×10인 종이 위에 붙이려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 0 또는 1이 적혀 있다. 1이 적힌 칸은 모두 색종이로 덮여져야 한다. 색종이를 붙일 때는 종이의 경계 밖으로 나가서는 안되고, 겹쳐도 안 된다. 또, 칸의 경계와 일치하게 붙여야 한다. 0이 적힌 칸에는 색종이가 있으면 안 된다.종이가 주어졌을 때, 1이 적힌 모든 칸을 붙이는데 필요한 색종이의 최소 개수를 구해보자.입력더보기총 10개의 줄에..

[BOJ C++] 17406번 - 배열 돌리기 4
코딩 테스트2025.12.10 16:17[BOJ C++] 17406번 - 배열 돌리기 4

[삼성 A형 기출 문제]백준 17406번 - 배열 돌리기 4문제더보기크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 값은 4이다.1 2 32 1 14 5 6배열은 회전 연산을 수행할 수 있다. 회전 연산은 세 정수 (r, c, s)로 이루어져 있고, 가장 왼쪽 윗 칸이 (r-s, c-s), 가장 오른쪽 아랫 칸이 (r+s, c+s)인 정사각형을 시계 방향으로 한 칸씩 돌린다는 의미이다. 배열의 칸 (r, c)는 r행 c열을 의미한다.예를 들어, 배열 A의 크기가 6×6이고, 회전 연산이 (3, 4, 2)인 경우에는 아래 그림과 같이 회전하..

반응형
image