[42Seoul] Philosophers
2023. 5. 4. 09:58
42 Seoul
설명에 들어가기 전 후기 사실 통과한지 약 3주가 넘었지만 이제야 후기를 쓰게 된다 식사하는 철학자 문제는 운영체제 수업에서 들었던 익숙한 문제여서 수월하게 접근할 수 있었다 구현에는 어렵지 않았지만 데이터레이스를 해결하기 위한 뮤텍스 사용, 그리고 뮤텍스를 남발할 때의 시간 밀림현상을 해결하는 것이 골치 아팠다 처음에는 각각의 변수에 뮤텍스를 하나씩 할당했지만, 그렇게 되면 시간이 밀려서 금방 죽게되기에 뮤텍스를 최대한 적게 사용하면서 데이터 레이스를 해결하도록 했다 밥 먹는 시간이나, 먹는 횟수를 잘못 설계해서 조금 바꾼 부분도 있었다 원래 보너스는 잘 하지 않는데, 세마포어를 활용하는 이 문제의 보너스 만큼은 나중에 아우터에 가면 꼭 보너스까지 해봐야 겠다고 생각했다 프로젝트 소개 철학자들은 둥근 ..
[졸업 프로젝트] #2 OpenPose로 keypoints 검출하기
2023. 4. 28. 20:30
Project/졸업프로젝트 - Running Coach
OpenPose 인간 자세 예측의 한 분야로, 오로지 카메라 한 대로만 가지고 사람의 몸, 얼굴, 손가락 마디를 정확하게 예측 하는 것 신체의 관절을 추론 후, 관절들을 이어주는 방식 BODY-25 출력 관절이 25개 COCO 출력 관절이 18개 MPII 출력 관절이 15개 => 달리기 자세를 측정해야 하기에 많은 관절을 추출할 수 있는 BODY-25를 사용하기로 했다 OpenPose 간단히 실습해보기 OpenPose를 사용하기 위해서는 깃허브에서 모델을 다운받아서 적용해야 한다 방법 OpenPose 저장소를 clone한다 (https://github.com/CMU-Perceptual-Computing-Lab/openpose) models 폴더 안의 getModels.sh를 실행한다 생성된 파일 중 mo..
[졸업 프로젝트] #1 주제 정하기
2023. 4. 28. 20:04
Project/졸업프로젝트 - Running Coach
우리학교는 1년간의 졸업 프로젝트를 진행해야 한다 졸업 프로젝트를 진행하면서 논문 역시 작성해야 한다 2인 팀으로 구성하였고, 주제를 고르기까지 정말 많은 고민을 했고, 많은 논문을 찾아보게 되었다 주제를 잡는데에는 중요한 요소가 몇가지 있었는데, 1. 논문을 작성할 수 있을 만 한 주제라는것 보통의 웹서비스나, 어플로는 논문을 작성할 수 없다 2. 머신 러닝 프로젝트라는 것 1번과 비슷한 내용이지만 선배들은 모두 머신 러닝 프로젝트를 하였고, 논문까지 작성했다 사실 머신 러닝 프로젝트를 해본적이 없기에, 어느 수준의 프로젝트가 우리가 할 수 있고 실현 가능한 지 가늠하는 것이 제일 어려웠다 팀원 분과 회의를 하면서 자세 교정에 관한 쪽으로 틀을 잡았고, treadmill에서 찍은 모습을 통해 달리기 자..
[Java의 정석] Chapter 9 java.lang패키지와 유용한 클래스
2023. 3. 22. 14:28
study/Java의 정석
java.lang 패키지 java.lang 패키지는 자바프로그래밍에 가장 기본이 되는 클래스를 포함하고 있음 Object클래스 Object 클래스는 모든 클래스의 최고 조상이기 때문에, Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능 protected Object clone() 객체 자신의 복사본을 반환 public boolean equlas(Obejct obj) 객체 자신과 객체 obj가 같은 객체인지 알려줌 protected void finalize() 객체가 소멸될 때 가비지 컬렉터에 의해 자동적으로 호출 public Class getClass() 객체 자신의 클래스 정보를 담고 있는 Class인스턴스를 반환 public int hashCode() 객체 자신의 해시코드를 반환 publi..
[Java의 정석] Chapter 8 예외처리
2023. 3. 22. 13:37
study/Java의 정석
예외처리(exception handling) 컴파일 에러 : 컴파일 시에 발생하는 에러 런타임 에러 : 실행 시에 발생하는 에러 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 에러(error) : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 예외 클래스의 계층구조 exception | |-IOException |-ClassNotFoundException |-... |-RuntimeException | |-ArithmeticException |-ClassCastException |-NullPointerException |-... |-IndexOutOfBoundsException 예외 클래스들은 두 개의..
[Java의 정석] Chapter 7 객체지향 프로그래밍2
2023. 3. 21. 16:43
study/Java의 정석
상속(inheritance) 상속 : 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 상속의 장점 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기에 코드의 추가 및 변경이 매우 용이 상속을 구현하는 방법 class Parent { } class Child extends Parent { } 상속을 받는다는 것은 조상 클래스를 확장(extend)한다는 의미 생성자와 초기화 블럭은 상속되지 않음. 멤버만 상속 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많음 클래스간의 관계 - 포함관계 포함관계 : 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언 class Circle { int x; int y; int r; } class Point { i..
[백준] 10026 적록색약
2023. 3. 17. 19:23
Algorithm Study
문제 설명 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 적록색약이 아닌 사람이 보는 그림의 구역의 수와 적록색약인 사람이 보는 그림의 구역의 수를 구하기 문제 풀이법 모든 정점을 방문하는 문제이므로 dfs, bfs 모두 사용할 수 있다 그림을 입력 받으면서 R, G, B를 각각 다른 수로 대입하여 배열 arr를 만들어준다 여기서 나는 R을 1, G를 2, B를 3으로 넣어주었다 적록색약이 아닌 경우 R구역의 수를 담는 변수 r, G구..
[42 Seoul] minishell
2023. 3. 17. 17:13
42 Seoul
설명에 들어가기 전 후기 2달동안 했던 미니쉘이 드디어 끝이 났다 미니쉘을 하면서 bash에 값을 정말 많이 입력을 해봤고, 설마 이것도 돼?? 라는 말만 정말 많이 한 것 같다 파싱 파트를 맡으면서 구조를 어떻게 짜야하는지가 정말 오래걸렸고, 구현을 하는데는 생각보다 오래 걸리지는 않았다 하지만 "문자열"문자열 같은 케이스를 만나면서 기존에 구현했던 방식으로는 이 케이스를 해결할 수 가 없다는 것을 알았고, 결국 갈아엎게 되었다 갈아엎고 새로운 방법을 채택했을 때는 다행히 다양한 케이스에도 유연하게 대처할 수 있었다 다만, 문자열 내에 환경변수가 섞여 들어가는 케이스에서는 새로운 연결리스트를 하나 더 만들어야 했기에 복잡하게 작동하긴 하였다 케이스마다 leak이 나오는 것이 달랐기에, leak을 잡는 ..
[Java의 정석] Chapter 6 객체지향 프로그래밍1
2023. 3. 15. 12:46
study/Java의 정석
객체지향언어 객체지향언어의 기본 개념 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용 객체지향언어의 주요 특징 코드의 재사용성이 높음 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성 가능 코드의 관리가 용이 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있음 신뢰성이 높은 프로그래밍을 가능하게 함 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있음 => 코드의 재사용성이 높고 유지보수가 용이 클래스와 객체 클래스 정의 : 객체를 정의해 놓은 것 용도 : 객체를 생성하는데 사용 객체 정의 : 실제로 존재하는 것. 사물 또는 개념 용도 : 객체가 가지..
[백준] 7562 나이트의 이동
2023. 3. 13. 20:00
Algorithm Study
문제 설명 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 체스판 위에 한 나이트가 놓여져있고, 나이트가 한 번에 이동할 수 있는 칸이 주어졌을 때 나이트는 몇 번 움직이면 해당 칸으로 이동할 수 있을지 구하기 문제 풀이법 최단 거리를 찾는 문제이므로 bfs를 사용하여 문제를 풀 수 있다 백준 1697번 숨바꼭질과 비슷한 문제로, 1차원인 숨바꼭질 문제와 달리 2차원인것만 다르다 우선 나이트는 움질일 수 있는 범위가 다음과 같다 (-2, -1),..