2024/03 12

백준 1774: 우주신과의 교감 (Python)

문제황선자씨는 우주신과 교감을 할수 있는 채널러 이다. 하지만 우주신은 하나만 있는 것이 아니기때문에 황선자 씨는 매번 여럿의 우주신과 교감하느라 힘이 든다. 이러던 와중에 새로운 우주신들이 황선자씨를 이용하게 되었다. 하지만 위대한 우주신들은 바로 황선자씨와 연결될 필요가 없다. 이미 황선자씨와 혹은 이미 우주신끼리 교감할 수 있는 우주신들이 있기 때문에 새로운 우주신들은 그 우주신들을 거쳐서 황선자 씨와 교감을 할 수 있다. 우주신들과의 교감은 우주신들과 황선자씨 혹은 우주신들 끼리 이어진 정신적인 통로를 통해 이루어 진다. 하지만 우주신들과 교감하는 것은 힘든 일이기 때문에 황선자씨는 이런 통로들이 긴 것을 좋아하지 않는다. 왜냐하면 통로들이 길 수록 더 힘이 들기 때문이다. 또한 우리들은 3차원 ..

개발/백준 2024.03.28

백준 1654: 랜선 자르기 (Python)

문제집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다.  이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.)  편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정하자. 그리고 자를 때는 항상 센티미터 단위로 정수길이만큼 자른..

개발/백준 2024.03.26

백준 10844: 쉬운 계단 수 (Python)

문제45656이란 수를 보자.이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다.N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다.해설 인접한 모든 자리의 차이가 '1'인 수를 계단 수라고 할 때, 길이 N ( 1 다이나믹 프로그래밍으로 문제에 접근해야 한다.  DP 문제의 핵심은 복잡한 문제를 간단한 문제로 나누어 문제를 풀어가는 것이다. 제일 쉬운 것부터 생각해보자.N이 1일 때, 계단 수는 몇개일까? 제일 앞의 자릿수가 i인 경우에 대해 모든 계단수를 구해보자.  i계단수DP[N][i]0-0111221331441551661771881991  DP[N][i]는 '길이가 N이고 앞자리가 i인 계단 수의 개수'를 저장하는 리스..

개발/백준 2024.03.20

백준 11722: 가장 긴 감소하는 부분 수열 (Python)

문제수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10}  이고, 길이는 3이다.해설 '가장 긴 ~ 하는' 시리즈의 문제이다. 우선 문제를 보았을 때 '연속적'으로 감소하는 수열의 길이를 구한다는 점에서, 다이나믹 프로그래밍을 이용하지 않을까 유추해볼 수 있다. 주로 이런 수열 패턴의 문제가 '이전의 답' 을 활용해 다음 답을 결정해나가기 편리하기 때문이다.  이 문제에서 DP 리스트는 'i번 원소까지 보았을 때 가장 긴 감소하는 수열의 길이' 로 정의하였다. 예를 들어, {5, 3, 4, 2, 1} 이라는 수열..

개발/백준 2024.03.18

정보처리기사 필기 벼락치기로 합격하기 (시험 정보, 공부법 공유)

2024년 정기 기사 1회 필기 시험에 합격했다. 짧은 시간에 준비한 시험이었지만 넉넉히 커트라인을 넘겼다. 정보처리기사 필기 시험을 준비중인 분들을 위해 시험 정보, 출제 경향, 공부 방법 등을 공유해보려 한다. 📄 시험 정보[응시 자격]*큐넷에 응시자격 자가진단이 있으니 잘 확인해보자 [수험료] 필기: 19400 원 / 실기: 22600 원 [시험 시간]총 2시간 30분 (과목당 30분) [합격 기준]100점 만점 기준으로 5개 과목 평균 60점 이상. 과목당 40점 이상 [시험 과목]1과목소프트웨어설계2과목소프트웨어개발3과목데이터베이스구축4과목프로그래밍언어활용5과목정보시스템구축관리 📌 출제 경향 전년도 기출문제와 비교했을 때 난이도는 평이했던 것 같다. 다만 개인적인 느낌으로는 다른 해 기출 대..

구름 IDE에서 Next.js 환경 구축하기 (사지방)

✅ 구글에 검색해봐도 어떻게 하는지 나와있지 않아 직접 작성하였다. 도움이 되었으면 좋겠다! 구름 IDE에 Next.js 프레임워크를 사용해 프로젝트를 만들어보자. 그대로 따라하기만 하면 잘 되게끔 상세히 적어놨으니 차근차근 따라와보자! 1. 컨테이너 생성 먼저 구름 IDE에서 컨테이너를 만들어준다. 이때 템플릿은 'HTML/CSS/JS 기본 프로젝트' 로 설정했다. 어차피 package.js 같은 파일들은 직접 만들어줄 것이기 때문에 'React' 템플릿을 따로 사용하지 않았다. 2. 기본 파일 삭제 기존에 존재하는 html, css, md 파일을 모두 삭제해 클린한 상태로 만든다. 3. NVM 설치 NVM은 node 의 버전관리를 위해 필요하다. NVM 설치를 위해 다음과 같이 명령어를 입력해주자. ..

개발/Web 2024.03.16

최소 스패닝 트리 (MST) + 백준 1197번

최소 스패닝 트리란? 최소 스패닝 트리(Minimum spanning tree) 는 그래프 이론에서 자주 사용하는 개념이다. 최소 신장트리, MST라고도 부르는데 다 같은 말이다. 스패닝 트리 / 최소 스패닝 트리 '최소 스패닝 트리'를 살펴보기에 앞서, 먼저 '스패닝 트리'를 이해해보자. 스패닝 트리는 어떤 그래프에서 모든 정점을 포함하지만, 사이클이 발생하지 않는 트리다. 다음 그래프를 보면서 이해해보자. 위 그래프는 사이클이 있다. 1번, 2번, 3번 노드가 서로 사이클을 발생시킨다. 사이클을 없애면서 모든 노드를 포함하는 그래프는 다음과 같은 모양이 될 것이다. 위에 보이는 그래프들 모두 '스패닝 트리' 다. 사이클이 없고 모든 노드를 포함하기 때문이다. 이때 스패닝 트리의 '가중치'를 물어본다면..

튜플을 딕셔너리 키 값으로 사용할 수 있을까?

my_dict = dict() my_dict[(0,0)] = 1 딕셔너리인데 키 값이 튜플이다. 이 경우 문제 없이 실행될까? 결론부터 말하면, 된다! 키(key) 값(value) 10 "민수" 20 "상호" 30 "수현" 딕셔너리는 키-값 쌍으로 이루어진 자료형이다. 파이썬에 내장된 딕셔너리는 '해시 테이블' (Hash table) 구조로 구현되어 있다. 해시 테이블을 논리적으로 표현하면 다음과 같은 모양이다. # Logical model of Python Hash table -+-----------------+ 0| | -+-----------------+ 1| ... | -+-----------------+ .| ... | -+-----------------+ i| ... | -+----------..

개발/Python 2024.03.10

백준 16469: 큰 수 만들기 (Python)

문제음이 아닌 정수가 N개 들어있는 리스트가 주어졌을 때, 리스트에 포함된 수를 나열하여 만들 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.해설처음에는 "?? 뭐지 이런게 플래5라고?" 싶을 정도로 단순히 풀릴 것 같은 문제였다.각 숫자들을 '가장 큰 자릿수'에 맞춘 다음, 정렬시킨 후 원본 값을 불러오면 되는거 아닌가 했던 것이다.예를 들어,3 30 34 5 9 의 경우3 30 34 5 9(자릿수 맞추기)30 30 34 50 90(정렬)90 50 34 30 30(원본값 불러오기)9 5 34 3 30 로 풀 수 있지 않을까 했던 것이다.  실제로 이렇게 생각을 하고 제출하니 83%까지는 올라가는 듯 했다. 그러나 여지없는 실패.위 방식으로 코드를 짜면 다음과 같은 반례가 생긴다.21211 121A..

개발/백준 2024.03.05

백준 1715: 카드 정렬하기 (Python)

문제정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 40장을 합친 뒤, 합친 50장 묶음과 20장을 합친다면 (10 + 40) + (50 + 20) ..

개발/백준 2024.03.03