백준 9625 BABBA JAVA 풀이 (DP, 피보나치, O(N))
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/9625📌 문제 개요처음 화면에는 A만 1개가 있다.버튼을 한 번 누를 때마다 A는 B로 바뀌고, B는 BA로 바뀐다.이렇게 버튼을 K번 눌렀을 때 화면에 존재하는 A와 B의 개수를 구하는 문제📌 접근 방법처음에는 문자열을 직접 바꿔가며 만들어야 하나 생각할 수 있다. 하지만 버튼을 누를수록 문자열 길이가 계속 늘어나기 때문에,실제 문자열을 생성하는 방식은 비효율적이다. 이 문제는 문자열 자체보다 A와 B의 개수 변화 규칙만 보면 훨씬 쉽게 풀 수 있다. 0번: A → A 1개, B 0개1번: B → A 0개, B 1개2번: BA → A 1개, B 1개3번: BAB → A 1개, B 2개4번: BABBA → A 2개, B 3개여기..
백준 10826 피보나치 수 4 JAVA 풀이 (DP, BigInteger, 시간복잡도)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/10826📌 문제 개요피보나치 수열의 n번째 값을 구하는 문제하지만 n의 범위가 매우 크기 때문에 일반적인 자료형으로는 해결할 수 없다.📌 접근 방법이 문제는 전형적인 DP(동적 계획법) 문제이전 두 값을 이용하여 다음 값을 계산재귀 대신 반복문 사용 (성능 고려)핵심은 자료형 선택📌 핵심 아이디어피보나치 수는 n이 커질수록 값이 매우 빠르게 증가long 범위를 초과하기 때문에 사용 불가따라서 BigInteger 사용 필수BigInteger temp \= a.add(b); BigInteger는 연산을 메서드로 수행해야 한다📌 전체 코드/*문제-10826 (실버5): 피보나치 수 4- n번째 피보나치 수를 출력하는 문제- n의 ..
백준 11931 수 정렬하기 4 JAVA 풀이 (정렬, 시간복잡도)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/11931📌 문제 개요N개의 정수가 주어질 때, 이를 내림차순으로 정렬하여 출력하는 문제📌 접근 방법입력받은 값을 배열에 저장Arrays.sort()를 사용하여 오름차순 정렬 수행정렬된 배열을 뒤에서부터 출력하여 내림차순으로 변환📌 핵심 아이디어int\[\] 배열은 Comparator를 사용할 수 없음따라서 내림차순 정렬을 위해Integer[] 사용하거나오름차순 후 역순 출력 전략 사용이번 풀이에서는 성능을 고려해 int[] + 역순 출력 사용📌 전체 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import ..
백준 5635 생일 JAVA 풀이 (정렬, 시간복잡도)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/5635📌 문제 개요이 문제는 N명의 이름과 생년월일이 주어졌을 때,가장 나이가 많은 사람과 가장 어린 사람의 이름을 구하는 문제📌접근 방법이 문제는 정렬을 활용해서 해결사람마다 이름, 일, 월, 년 정보를 하나로 묶어 관리해야 하므로Person 객체를 만들어 저장 이후 생년월일을 기준으로 년 → 월 → 일 순서로 오름차순 정렬하면가장 앞에는 가장 나이가 많은 사람,가장 뒤에는 가장 어린 사람이 오게 된다.📌핵심 아이디어이 문제의 핵심은 생년월일 비교 기준을 정확하게 세우는 것년도가 작은 사람이 더 나이가 많다년도가 같으면 월 비교월도 같으면 일 비교정렬 후 첫 번째와 마지막 사람을 출력하면 된다📌전체 코드import java..
백준 9656 돌 게임 2 JAVA 풀이 (게임이론, 시간복잡도)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/9656📌 문제 개요돌 N개가 주어지고,한 번에 1개 또는 3개의 돌을 가져갈 수 있다.마지막 돌을 가져가는 사람이 승리할 때,상근(SK)과 창영(CY) 중 누가 이기는지 출력하는 문제이다.📌 접근 방법이 문제는 단순 구현이 아니라게임 이론 + 패턴 찾기 문제이다.작은 값부터 직접 경우를 나열하면 규칙이 보인다.📌 핵심 아이디어 N 결과 1CY2SK3CY4SK5CY6SK결과가 반복된다홀수 → CY짝수 → SK왜 이런 결과가 나오나?한 번에 1 또는 3을 가져가므로상대를 **불리한 상태(홀수)**로 넘기면 승리 가능짝수에서 시작하면 항상 이길 수 있음홀수는 상대가 유리📌 전체 코드import java.io.BufferedRea..
정처기 실기 [05] 2022년 3회 기출 오답노트 (핵심 개념 정리)
·
정보처리기사 오답노트
해당 글은 틀린 문제만 정리한 오답노트입니다.시험에서 헷갈리기 쉬운 개념 위주로 정리했습니다.1. E-R 다이어그램Q. E-R 다이어그램의 요소에 대한 설명을 참고하여 빈칸에 적절한 기호를 쓰시오. (기호 X)ㄱ : 개체 간 연관되는 관계ㄴ : 개체의 정보를 나타내는 고유의 특성ㄷ : 식별 가능한 현실 세계의 대상을 표현 정답ㄱ: 마름모ㄴ: 타원형ㄷ: 직사각형나의 오답 :ㄱ: 직선ㄴ: 타원형ㄷ: 직사각형핵심 포인트개체(Entity) → 직사각형속성(Attribute) → 타원형관계(Relationship) → 마름모→ “무슨 역할인지”로 구분하면 헷갈림 없음한줄요약개체=직사각형 / 속성=타원 / 관계=마름모2. 서브넷의 브로드캐스트 주소Q. 192.168.1.0/25의 주소를 부여받아 고정 길이 서브넷..
백준 2669 직사각형 네 개의 합집합의 면적 JAVA 풀이 (브루트포스, 구현, 시간복잡도)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/2669📌 문제 개요4개의 직사각형이 주어졌을 때,이들이 차지하는 **전체 면적(합집합)**을 구하는 문제이다. 단, 겹치는 영역은 중복해서 계산하지 않는다.📌 접근 방법이 문제는 좌표 계산으로 풀 수도 있지만,가장 직관적인 방법은 다음과 같다. 2차원 배열에 직접 칠하기100x100 크기의 배열 생성직사각형 영역을 true로 채움마지막에 true 개수 세기📌 핵심 아이디어겹침 처리map[x][y] = true; - 이미 true여도 그대로 유지- 즉, 겹쳐도 자동 처리됨좌표 범위for(int x = x1; x - (x2, y2)는 포함 ❌- 문제에서 면적 기준이라 중요 포인트📌 전체 코드import java.io.Buffe..
백준 8979 올림픽 JAVA 풀이 (정렬, 구현, 시간복잡도)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/8979📌 문제 개요각 나라의 금, 은, 동 메달 개수가 주어질 때특정 국가 K의 등수를 구하는 문제이다. 단, 메달 수가 완전히 동일한 경우 같은 등수를 가진다.📌 접근 방법이 문제는 정렬 + 구현 문제로 접근했다.나라 정보를 객체로 저장금 → 은 → 동 기준으로 내림차순 정렬정렬된 순서를 기준으로 등수 계산📌 핵심 아이디어1. 정렬 기준금메달이 많을수록 우선금이 같으면 은은도 같으면 동Arrays.sort(arr, (a, b) -> { if (a.gold != b.gold) return Integer.compare(b.gold, a.gold); if (a.silver != b.silver) return Intege..
백준 9093 단어 뒤집기 JAVA 풀이 (문자열, 구현, 시간복잡도)
·
코테(Solved.ac + Programmers)
📌 문제 링크https://www.acmicpc.net/problem/9093📌 문제 개요여러 줄의 문자열이 주어질 때각 줄마다 단어 단위로 뒤집어서 출력하는 문제이다. 단, 문장의 순서는 유지하고각 단어 내부 문자만 뒤집어야 한다.📌 접근 방법이 문제는 복잡한 알고리즘이 아닌 문자열 처리 문제이다.입력 문자열을 공백 기준으로 나눈다.각 단어를 뒤집는다.다시 공백으로 이어서 출력한다.📌 핵심 아이디어문장 전체 reverse ❌단어별 reverse ⭕I am happy → I ma yppah 📌 전체 코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main {..
백준 1924 2007년 JAVA 풀이 (구현, 시간복잡도)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/1924📌 문제 개요2007년의 특정 날짜가 주어졌을 때해당 날짜의 요일을 구하는 문제이다.2007년 1월 1일은 월요일(MON)윤년이 아니므로 2월은 28일까지 존재📌 접근 방법이 문제는 날짜를 직접 계산하는 것이 아니라누적 일수를 기반으로 요일을 계산하는 문제이다.각 달의 일수를 배열로 관리입력 받은 날짜까지 총 일수를 계산7로 나눈 나머지를 통해 요일 도출📌 핵심 아이디어x월 y일 → 이전 달까지 누적 + y일요일은 7일 단위 반복 → % 71월 1일이 MON이므로→ index 보정 없이 totalDay % 7 사용 가능📌 전체 코드import java.io.BufferedReader;import java.io.IOExc..