본문 바로가기

전체 글45

프로그래머스 42747 H-Index H-Index 문제에 대한 설명은 다음 링크를 확인하면 됩니다. 문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr H-Index는 논문 n개 중, h번 이상 인용된 논문이 h 편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 H-Index가 됩니다. 처음 문제에 대한 설명을 읽었을 때 "이게 무슨 소리지?"라는 생각이 들었습니다. 이해를 더 쉽게 하기 위해서는 예시를 자세하게 봐보는 것이 도움이 되기 때문에 문제에서 예시로 제시한 입출력이 어떻게 정답을 반환하는지 알아보겠습니다. citations = [3, 0, 6, 1, 5] 내림.. 2022. 7. 20.
프로그래머스86971 전력망 둘로 나누기 전력망 둘로 나누기 문제 설명은 다음 링크를 참고하면 됩니다. 문제 설명 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 노드의 총합 n과 노드의 연결 정보를 가지고 있는 wires를 활용하여 두 그래프의 노드의 개수의 차이를 최대로 하는 결과를 반환하는 문제입니다. 하나의 그래프에서 임의의 노드 연결을 제거하였을 때 노드의 차이를 구하기 위해서는 모든 경우를 찾아보지 않고는 답을 확실하게 구할 수 없어 모든 경우의 수를 탐색하였습니다. 구현 방법은 다음과 같습니다. (그래프 연결 정보는 인접 리스트 표현법에 따라 저장한다) 인접 리스트 표현법으로 그래프의.. 2022. 7. 19.
연결리스트는 뭐야? 연결 리스트는 구조를 봐도 알 수 있듯이 연결되어 있는 리스트이다. 연결 리스트는 배열과 거의 같은 기능을 한다. 2가지 자료 구조에 대해서 장단점을 연결 리스트를 중점으로 알아보겠다. 연결 리스트의 장점 연결 리스트 중간에 값을 삽입하는 것이 편한다. 데이터를 저장할 때마다 동적으로 공간을 만들어서 쉽게 추가할 수 있다. 연결 리스트의 단점 데이터와 함께 포인터를 저장해야 하므로 메모리를 많이 차지한다. 배열에 비해 상대적으로 구현이 어렵다. i번째 데이터에 대해서 순차적으로 탐색을 해야 한다. 장점과 단점을 잘 비교하여 필요한 자료 구조를 잘 선정하면 될 것 같다. 다음은 연결 리스트의 구조체이다. typedef int element; typedef struct { element data; struc.. 2022. 7. 8.
if문 중첩 시 간결하게 보이는 법 상태를 관리해야 하는 서비스를 제공하는 경우 예를 들어 플레이어의 상태, 주문 상태, 배송 상태 등에서는 조건문을 사용하지 않을 수 없다. 다음은 마인크래프트 모드 개발을 하던 중에 작성한 코드이다. @EventHandler public void onRightClick(PlayerInteractEvent event) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { if (event.getItem() != null) { if (event.getItem().getItemMeta().equals(gamblingObject.getOakWood().getItemMeta())) { Player player = event.getPlayer(); ItemStack it.. 2022. 7. 6.
큐는 뭐야? 스택과 마찬가지로 큐를 1 문장으로 요약하면 "선입선출의 특성을 가진 자료구조"라고 할 수 있다. 선입선출은 사실 실생활에서도 굉장히 많이 사용된다. 예를 들어 은행에 갔을 때 번호표를 뽑는 것, 맛집에 갔을 때 순서표를 뽑고 기대리는 것, 편의점 물류 정리 등이 있다. 다음은 컴퓨터 공학에서 큐의 활용 예시이다. 키보드, 마우스 등 입력 장치 관리 모니터, 프린터 등 출력 장치 관리 운영체제 작업 스케줄링 선입선출의 특성을 가지기 위해서는 원소를 저장하기 위한 배열 data와 맨 앞 원소를 가리킬 front, 맨 뒤 원소를 가리킬 rear 변수가 필요하다. 특성에 맞게 구조체로 표현하면 다음과 같다. typedef int element; typedef struct { int front, rear; el.. 2022. 7. 5.
스택은 뭐야? "스택은 후입 선출(LIFO) 형식의 자료구조이다." 정도의 개념은 다들 한 번씩 들어봤을 거라고 생각한다. 스택의 개념은 이렇게 한 줄로 설명할 수 있지만 스택은 프로그래밍 언어, 시스템 기능 등 많은 부분에서 활용되고 있다. 스택 활용 예시는 다음과 같다. 함수 호출 및 실행 웹페이지 또는 핸드폰의 뒤로 가기 기능 후위표기식을 사용한 수식 계산 스택을 구현하기 위해서는 원소를 저장하기 위한 data와 가장 최근에 입력되었던 원소의 인덱스 위치를 가리키는 top이 필요하다. 구조체로 표현하면 다음과 같다. typedef int element; typedef struct { element data[STACK_SIZE]; int top; } StackType; 위와 같은 구조를 가진 스택을 구현하기 위해서.. 2022. 7. 4.
Completed 406 NOT_ACCEPTABLE 프로젝트를 진행하며 delete 메서드를 처리할 때에 response로 HttpStatus.OK만을 반환하였는데 이를 프론트에서 mapping 하는데 불편하다는 의견이 있어서 DefaultDeleteResponseDto라는 클래스를 만들어서 message를 넘겨주었습니다. 코드를 작성한 후에 실제로 동작하는지 확인하기 위해 프로젝트를 실행시켜보니 406 NOT_ACCEPTABLE이 발생하였고, 많은 이유들이 있겠지만 객체를 json으로 변환하지 못해서 발생하는 오류가 가장 유력했습니다. public class DefaultDeleteResponseDto { private String message; @Builder public DefaultDeleteResponseDto(String message) { .. 2022. 5. 27.
org.hibernate.TransientPropertyValueException 기존 프로젝트에 새로운 데이터베이스 테이블을 추가하고, 실제 데이터가 제대로 저장되는지 확인하는 코드를 작성한 후에 프로젝트를 실행시켜보니 다음과 같은 예외가 발생하였습니다. org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing EntityManager의 persist 함수를 통해 객체를 저장하였는데 해당 객체가 저장되는 과정에서 참조하고 있는 객체가 저장되지 않아 발생한 예외였습니다. 예외를 일으킨 코드는 다음과 같습니다. WrongQuestion wrongQuestion = WrongQuestion.bui.. 2022. 5. 23.
Embedded 사용 시 MappingException 발생 문제집 생성 관련 캡스톤 프로젝트 중에 문제의 해설을 등록하는 부분이 존재하여 문제 해설을 Commentary, 문제를 Question으로 작성하였습니다. 원래는 1대 1 맵핑을 생각하고 연관관계를 설정하였지만 테스트 코드를 작성하며 생각해본 결과 @Embedded를 사용하여 value type으로 관리하는 게 더 효율적일 것이라고 판단하여 코드를 수정하여 프로젝트를 실행해보았는데 다음과 같은 오류가 발생하였습니다. Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: core.backend.question.domain.Question column: content (should be mapped with inse.. 2022. 4. 27.