본문 바로가기
반응형

Algorithm29

백준 6단계 - Java Preface 최근에 자바 공부에 많은 시간을 투자했지만, 아직도 브론즈 1~실버 5단계 문제를 혼자 힘으로 제대로 해결하지 못하고 구글링을 하거나 GPT에게 질문을 하게 된다. 보통 월요일마다 백준 문제를 푸는데, 하루 종일 한 두 문제도 해결하지 못하는 날도 있다. 물론 문제를 풀었을 때 오는 성취감도 좋지만, 해결하지 못했을 때 받는 스트레스가 나를 너무 괴롭힌다. 스트레스와 짜증은 그렇다 쳐도 자꾸 자신감이 떨어지고 개발 자체에 대한 흥미를 잃게 되는 것 같아 백준 문제풀이는 잠시 쉴 생각이다. 자바 기본서의 마지막장을 업로드한 후 생활코딩에서 자바스크립트 강의를 보고, 이후엔 JSP를 공부할 계획이다. 7월 중순에 정보처리기능사 실기 공부를 하여 시험을 친 이후엔 Spring 강의를 보며 포트폴.. 2023. 5. 22.
백준 5단계 -Java Preface 5단계는 문자열과 관련된 문제들이었는데, 며칠 전 이것이 자바다 책에서 다양한 문자열 메소드를 공부한 탓인지 큰 어려움 없이 문제들을 풀 수 있었다. 2908번을 해결한 후 다른 사람들의 코드를 찾아보던 중 StringBuilder 객체를 생성할 때 String 타입의 값은 append( ) 메소드를 사용할 필요 없이 StringBuilder 객체를 생성하면서 값을 할당할 수 있다는 것을 알게 되었다. https://www.acmicpc.net/step/7 문자열 단계 정수를 문자열로 입력받는 문제. Python처럼 정수 크기에 제한이 없다면 상관 없으나, 예제 3은 일반적인 정수 자료형에 담기에 너무 크다는 점에 주목합시다. www.acmicpc.net - 27866번 package nu.. 2023. 4. 18.
백준 4단계 - Java Preface 4단계는 배열과 관련된 문제들이다. 코드의 성능을 조금이라도 향상시키기 위해 모든 입력에 Scanner 대신 BufferedReader를 사용했다. 이번 단계에선 원하는 결과가 제대로 출력되지 않아 해결하는데 시간이 꽤나 오래 걸린 문제들이 있었다. (3052번, 10811번 등) 어려운 문제가 나왔을 때 구글링을 통해 코드를 본 뒤 이해하는 식으로 넘어가면 문제를 푸는 의미가 없는 것 같아서 혼자 힘으로 꾸역꾸역 어떻게든 정답을 맞춘 후 다른 해결 방법들을 찾아봤다. 본문에서 주석처리된 코드들은 다른 블로그나 chat-gpt로부터 얻은 코드들이다. 앞으로 점점 더 어려운 문제들을 해결하려면 다양한 메소드를 익혀야 할 것 같다. 아 그리고 정보처리기능사 필기 시험은 무난하게 합격했다. 다음.. 2023. 4. 11.
백준 3단계 - Java Preface 3단계는 반복문과 관련된 문제들이다. 문제 자체의 난이도는 평이했지만, System.out.print( )를 사용하는 출력 방법 외에 Scanner, BufferedReader 등의 사용 방법을 익히는 것이 조금 복잡했다. Scanner를 이용하는 방법은 꽤 익숙해졌지만, BufferedReader와 StringTokenizer의 사용 방법은 아직 완벽히 이해하지 못했다. 본문에 달아둔 링크의 글을 여러번 읽어보며 해당 개념을 제대로 이해하고 넘어갈 생각이다. 또, 이번 주말에 정보처리기능사 필기 시험이 있어 이번 주는 시험 준비를 해야 할 것 같다. 시험을 본 이후부턴 월요일엔 백준 문제를, 다른 날에는 이것이 자바다 책을 공부할 계획이다. https://www.acmicpc.net/st.. 2023. 4. 2.
백준 2단계 - Java Preface 2단계는 조건문과 관련된 문제들이다. 나는 2884번을 풀 때 절댓값을 사용해서 출력값을 얻었지만, 다른 사람들의 코드를 보니 내가 작성한 코드보다 훨씬 간단했다. 또, 2525번 문제는 내가 작성한 코드를 제출하면 오답으로 인식되어 어쩔 수 없이 다른 코드를 제출했다. 분명 출력값이 주어진 조건과 동일하게 나오는데 왜 오답으로 처리되는지 잘 모르겠다. 두 문제 뿐만이 아니라 다른 몇몇 문제들도 다른 사람들의 코드에 비해 내 코드가 훨씬 길고 복잡했다. 물론 문제 해결 방법이 특정되어 있는 것은 아니지만, 아무래도 내 코드는 효율성이 많이 떨어지는 것 같다. 나는 왜 대다수의 사람들처럼 간결한 코드를 구성하지 못할까. 앞으로 꾸준히 다양한 문제를 접하다 보면 적절한 알고리즘을 선택할 수 있.. 2023. 3. 23.
백준 1단계 - Java Preface 이것이 자바다 책 공부를 하던 도중 문득 너무 이론 위주로만 공부하고 있는 것 같다는 생각이 들었다. 이렇게 이론만 백날 공부해봤자 해당 개념을 실제 코드에 적용하지 못하면 무슨 소용인가 싶어 시간이 날 때마다 백준에서 조금씩 문제를 풀어보기로 결정했다. 일단은 단계별 문제 카테고리에서 12단계까지 차근차근 풀어 볼 생각이다. 그리고 가능하다면 2학기가 시작하기 전에 적어도 골드까지는 달아보고 싶다. https://www.acmicpc.net/step/1 입출력과 사칙연산 단계 입출력과 사칙연산 www.acmicpc.net - 10869번: 사칙연산 package num1; import java.util.Scanner; public class B10869 { public static voi.. 2023. 3. 22.
(Fin) 트리 구조, 이진 트리와 이진 검색 트리 Preface 오늘 공부한 트리 구조를 끝으로 자료구조와 알고리즘 책을 모두 마쳤다. 트리 구조와 이진 트리는 힙 정렬 알고리즘에서 이미 한 번 봤던 내용이라 쉽게 이해하며 넘어갈 수 있었고, 코드 자체도 선형 검색 방법을 따르므로 큰 어려움 없이 금방 작성할 수 있었다. 처음 알고리즘 공부를 시작했을 땐 간단한 코드만 이해할 수 있었을 뿐, 조금만 길고 복잡한 코드를 접하면 겁부터 났었는데, 몇 달 간 다양한 코드를 눈으로 보고 직접 작성해 본 탓인지 그래도 이전보다 조금은 성장한 것 같다고 느껴 나름의 성취감이 생긴다. 이번 주말엔 그동안 업로드했던 코드들을 천천히 복습하며 푹 쉰 후, 다음주부터 데이터베이스 공부를 시작할 생각이다. 1. 트리 구조 - 루트 : 트리의 가장 위쪽에 있는 노드 - 리프.. 2022. 1. 21.
원형 이중 연결 리스트 Preface 이번 장에선 연결 리스트의 단점을 보완한 원형 이중 연결 리스트를 공부했다. 코드의 구성 면에선 포인터와 커서를 이용한 연결 리스트와 크게 다른 부분이 없어 손쉽게 코드를 작성할 수 있었다. 나는 왜 지금껏 연결 리스트를 공부하며 노드를 역순으로 스캔할 생각을 하지 않았을까? 코드의 효율성은 단순히 얻어지는 것이 아니라 끝없이 더 나은 방법을 모색해야만 떠올릴 수 있는 것인데, 나는 책에 나온 방법에 한해서만 고민하는 것 같다. 아마도 '우물 안의 개구리'는 이럴 때 쓰는 말이 아닐까 싶다. 더 넓게 더 멀리 봐야 하는데 주어진 내용이 전부라 생각하고 그 이상은 생각하지 않게 된다. 공부를 하면 할 수록 책에 나온 내용만을 공부하는 것이 아닌, 개인 프로젝트를 통해 나만의 코드를 작성하며 .. 2022. 1. 18.
커서를 이용한 연결 리스트 Preface 이번 장에선 커서를 이용한 연결 리스트를 공부했다. 이는 연결 리스트를 사용하는 방법 중 하나이므로 지난 장에서 공부했던 포인터를 이용한 연결 리스트와 크게 다른 부분이 없었다. 한 가지 다른 점이라면 프리 리스트를 사용한다는 것인데, 이 또한 배열의 빈 공간 인덱스를 특정 변수에 저장한다는 개념일 뿐 특별한 점은 없어 어렵지 않게 이해할 수 있었다. - 커서(cursor) : 인덱스로 나타낸 뒤쪽 포인터 - 커서를 이용한 연결 리스트 : 데이터 개수가 크게 변하지 않거나 데이터 최대 개수를 예측할 수 있는 경우 프리 리스트를 사용하여 메모리를 확보하는 구조 - 커서를 이용한 연결 리스트 코드 # 커서로 연결 리스트 구현하기 from __future__ import annotations f.. 2022. 1. 15.
연결 리스트, 포인터를 이용한 연결 리스트 Preface 이번 장에선 리스트의 종류들 중 포인터를 통해 효율성을 향상시킨 연결 리스트에 대해 공부했다. 만들어야 할 함수가 많아 코드가 생각보다 길어졌지만, 클래스를 통해 선언하는 단순한 함수들을 나열한 것이므로 크게 어려운 부분은 없었다. 며칠 간 책에 있는 내용들을 이해하기 어려워 스트레스를 많이 받았었는데, 이번 장은 쉽게 이해할 수 있었던 탓인지 숨통이 조금 트인 것 같다. 1. 연결 리스트 - 리스트 : 순서가 있는 데이터를 늘어놓은 자료구조 1) 선형 리스트 : 데이터의 논리적인 순서와 기억 장소에 저장되는 물리적인 순서가 일치하는 구조 2) 연결 리스트 : 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 구조 - 연결 리스트 용어 1) 노드 : 각각의 원소 2) 머리 노드 :.. 2022. 1. 13.