본문 바로가기
반응형

프론트엔드/알고리즘40

파이썬 Python | 알고리즘 | 백준 랜선 자르기 ⭕ 파이썬 Python | 알고리즘 | 백준 랜선 자르기➡️ 문제링크https://www.acmicpc.net/problem/1654 ➡️ 문제 탐색하기K개의 랜선을 N개의 동일한 길이로 잘라야 하는데, 그중에서 가능한 랜선의 최대 길이를 구하는 것이 목적이다. 이때 필요한 랜선의 수 N보다 많이 만들어도 상관없다. 따라서 이 문제는 "N개 이상의 랜선을 만들 수 있는 최대 길이"를 구하는 문제로 정의할 수 있다.단순한 방법으로 접근하였을 때, 가장 긴 랜선의 길이에서부터 하나씩 줄여가면서 N개 이상의 랜선을 만들 수 있는지 확인하려고 하였다. 랜선의 길이가 수백만까지 커질 수 있기 때문에, 매번 확인하는 방식으로는 시간 내에 문제를 해결할 수 없었다. 범위 내에서 최대값을 찾는 문제이므로, 이진 탐색을.. 2024. 8. 20.
ㄷ파이썬 Python | 알고리즘 | 백준 먹을 것인가 먹힐 것인가 ⭕ 파이썬 Python | 알고리즘 | 백준 먹을 것인가 먹힐 것인가➡️ 문제링크https://www.acmicpc.net/problem/7795 ➡️ 문제 탐색하기가장 구현하기 쉬운 방법은 A의 모든 원소와 B의 모든 원소를 비교하는 것이지만, 시간 복잡도는 O(N * M)이며, N과 M이 최대 20,000일 때는 400,000,000번의 연산이 필요하게 된다. 이는 실제 시간으로 4초 이상 걸릴 수 있어 비효율적이라고 판단하였다.문제에서 주어진 조건을 고려할 때, 보다 효율적인 방법이 필요하다고 생각하였다.집합 A와 B를 오름차순으로 정렬하면, B에서 A의 원소보다 작은 원소들을 빠르게 찾을 수 있게 된다. 정렬 자체의 시간 복잡도는 O(N log⁡N) 및 O(M log⁡M)이다.정렬된 B에서 A의 .. 2024. 8. 19.
파이썬 Python | 알고리즘 | 백준 숫자 카드 2 ⭕ 파이썬 Python | 알고리즘 | 백준 숫자 카드 2➡️ 문제링크https://www.acmicpc.net/problem/10816 ➡️ 문제 탐색하기상근이가 가진 카드에서 특정 숫자들이 몇 개 있는지를 알아내야 한다.카드의 개수(N)와 구해야 할 숫자의 개수(M)가 최대 500,000개까지 될 수 있다. 카드의 숫자 범위는 -10,000,000에서 10,000,000 사이이다.각 숫자의 개수를 세는 방법은 각 쿼리마다 O(N)의 시간 복잡도를 가지며, M개의 쿼리에서 총 시간 복잡도가 O(M*N)으로 시간 초과가 발생한다.카드 리스트를 정렬한 후, bisect_left와 bisect_right를 활용하여 각 숫자의 개수를 효율적으로 찾을 수 있다.카드 리스트 정렬: O(N log N)각 쿼리 처리.. 2024. 8. 18.
파이썬 Python | 알고리즘 | 백준 수 찾기 ⭕ 파이썬 Python | 알고리즘 | 백준 수 찾기➡️ 문제링크https://www.acmicpc.net/problem/1920 ➡️ 문제 탐색하기리스트에서 특정 값이 존재하는지 확인해야 한다.처음 문제를 접했을 때 가장 먼저 생각한 방법은 리스트를 순차적으로 탐색하며 값을 확인하는 선형 탐색(Linear Search) 방법이었다. 리스트의 각 요소를 하나씩 확인하여 찾고자 하는 값이 있는지 판단하는 방식으로, 구현이 매우 간단하다. 그러나, 입력 크기 N과 M이 최대 100,000까지 주어지므로 선형 탐색의 시간 복잡도 O(M*N)은 매우 비효율적이라는 생각이 들었다. N=100,000, M=100,000이라면, 총 10억 번의 비교 연산이 필요하게 된다. 따라서, 시간제한 1초를 초과하게 된다.다음.. 2024. 8. 17.
파이썬 Python | 알고리즘 | 백준 사과 담기 게임 ⭕ 파이썬 Python | 알고리즘 | 백준 사과 담기 게임➡️ 문제링크https://www.acmicpc.net/problem/2828 ➡️ 문제 탐색하기바구니의 초기 위치와 크기가 주어졌을 때, 사과가 떨어지는 위치에 따라 바구니를 최소한으로 이동시키는 문제이다. 불필요한 이동을 최소화하여 최종 이동 거리를 계산하는 것이 목표이다.사과가 바구니 안에 떨어지는 경우: 바구니가 이미 사과의 위치를 포함하고 있다면 바구니를 움직일 필요가 없다. 이동 거리는 0이 된다. 사과가 바구니 왼쪽에 가깝게 떨어지는 경우: 바구니를 왼쪽으로 이동시켜야 한다. 이때, 사과와 바구니의 왼쪽 끝 간의 거리만큼 바구니를 이동시키면 된다. 사과가 바구니 오른쪽에 가깝게 떨어지는 경우: 바구니를 오른쪽으로 이동시켜야 한다. 이.. 2024. 8. 16.
파이썬 Python | 알고리즘 | 백준 거스름돈 ⭕ 파이썬 Python | 알고리즘 | 백준 거스름돈 ➡️ 문제링크https://www.acmicpc.net/problem/14916 ➡️ 문제 탐색하기2원과 5원 동전만을 사용하여 특정 금액을 거슬러 주는 문제이다. 가장 직관적인 방법은 큰 단위의 동전을 우선적으로 사용하는 것이다. 14원을 거슬러 준다고 가정하면, 처음에 5원으로 최대한 많이 나누어 보면 5원 세 개를 사용하면 15원이 되지만, 14원을 넘으므로 5원 두 개를 사용하면 10원이 되고, 남은 4원을 2원 두 개로 거슬러 줄 수 있다. 6원을 거슬러 준다면, 5원 하나를 사용하면 1원이 남아 불가능하지만, 2원 세 개를 사용하면 가능하다.조건2원과 5원 동전만 사용하여 거스름돈을 주어야 한다.가능한 적은 개수의 동전을 사용해야 한다.그리.. 2024. 8. 15.
파이썬 Python | 알고리즘 | 백준 컵홀더 ⭕ 파이썬 Python | 알고리즘 | 백준 컵홀더➡️ 문제링크https://www.acmicpc.net/problem/2810 ➡️ 문제 탐색하기극장의 한 줄에 있는 좌석의 정보가 주어졌을 때, 모든 사람이 컵홀더를 사용할 수 있는 최대 사람의 수를 구하는 문제이다.일반석(S)의 경우, 각 좌석마다 컵홀더가 하나씩 배치되는 것이 당연하다. 이를 바탕으로 초기 계산은 각 좌석 수 + 1로 설정하였다.커플석(L)은 두 개씩 쌍으로 주어지므로, 하나의 커플석 쌍당 하나의 컵홀더가 필요하다. 따라서 커플석 두 개당 하나의 컵홀더만 필요하다는 점을 고려하여 컵홀더 수를 줄였다. 커플석 두 개당 하나의 컵홀더가 필요하다는 점에서 커플석의 수를 2로 나누는 것이 합리적이다.좌석의 수 N과 계산된 컵홀더 수 중 작은.. 2024. 8. 14.
파이썬 Python | 알고리즘 | 백준 거스름돈 ⭕ 파이썬 Python | 알고리즘 | 백준 거스름돈➡️ 문제링크https://www.acmicpc.net/problem/5585 ➡️ 문제 탐색하기그리디(Greedy) 알고리즘: 그리디 알고리즘은 매 순간 최적의 선택을 하여 전체 문제의 최적해를 찾아가는 방식이다. 이 문제에서 그리디 알고리즘을 사용하는 이유는 화폐 단위가 배수 관계로 화폐 단위가 큰 것부터 사용하여 최적의 해를 빠르게 구할 수 있기 때문이다. 큰 단위의 동전부터 차례대로 선택하지 않으면, 더 많은 동전을 사용하게 되어 비효율적인 해를 도출할 수 있다. 따라서, 동전 단위를 큰 것부터 작은 것 순서대로 리스트에 저장하고, 순차적으로 거슬러 주는 방식을 사용한다. 큰 단위의 동전부터 사용하면 최적의 해를 보장할 수 있는 이유는, 큰 단위.. 2024. 8. 13.
파이썬 Python | 알고리즘 | 백준 덩치 ⭕ 파이썬 Python | 알고리즘 | 백준 덩치➡️ 문제링크https://www.acmicpc.net/problem/7568 ➡️ 문제 탐색하기두 사람 A와 B의 덩치가 각각 (x, y), (p, q) 일 때, x > p 그리고 y > q이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"라고 판단한다. 같은 방식으로 다른 사람들과 비교하여 자신의 덩치가 몇 번째인지 등수를 매긴다. 최대 N이 50이므로 O(N^2) 복잡도, 연산 약 2,500개로 시간복잡도 1초 안에 충분히 해결 가능하다. 입력 범위를 항상 잘 살피자! 이렇게 모든 경우의 수를 탐색해보는 알고리즘을 완전탐색 또는 브루트포스라고 한다. ➡️ 코드 설계하기사람의 수 N과 각 사람의 몸무게와 키를 입력받는다.각 사람의 몸무게와 키를 리스트.. 2024. 8. 11.
파이썬 Python | 알고리즘 | 백준 나무 조각 ⭕ 파이썬 Python | 알고리즘 | 백준 나무 조각➡️ 문제링크https://www.acmicpc.net/problem/2947 ➡️ 문제 탐색하기1부터 5까지의 숫자가 적힌 나무 조각을 1, 2, 3, 4, 5 순서로 정렬해야 한다. 인접한 두 조각만 바꿀 수 있고, 바뀔 때마다 현재 순서를 출력해야 한다.버블 정렬을 직접 구현하는 문제라고 생각한다. 버블 정렬은 인접한 두 원소를 비교하여 정렬하는 알고리즘으로, 시간 복잡도는 O(n^2)이다. 하지만, 항상 5개의 조각만 다루고, 각 단계를 출력해야 하는 요구사항 때문에 버블 정렬이 오히려 적합하다고 생각한다.(N-1) + (N-2) + ... + (2) + (1) = N(N-1)/2 단순 구현 문제는 시간복잡도를 계산할 만큼 빡빡하게 나오는 일이.. 2024. 8. 10.
파이썬 Python | 알고리즘 | 백준 커트라인 ⭕ 파이썬 Python | 알고리즘 | 백준 커트라인➡️ 문제링크https://www.acmicpc.net/problem/25305 ➡️ 문제 탐색하기구현 문제로 분류되어 있다. 구현 문제란 문제의 조건을 코드로 직접 구현해야 하는 유형을 말한다. 구현 문제는 구현을 해야 하는...?n명의 학생 점수가 주어지고, 상위 k명까지 상을 받는다.즉, 점수를 내림차순으로 정렬하여 k번째 점수를 출력하면 된다. ➡️ 코드 설계하기입력을 읽어 들인다. 입력은 첫 줄에 n과 k, 다음 줄에 각 학생의 점수로 주어진다.input().split()을 통해 공백을 기준으로 데이터를 나누고, 첫 번째와 두 번째 요소를 각각 N과 k로 변환한다.나머지 데이터를 scores 리스트에 정수형으로 변환하여 저장한다.점수를 리스트에.. 2024. 8. 9.
파이썬 Python | 알고리즘 | 백준 생일 ⭕ 파이썬 Python | 알고리즘 | 백준 생일➡️ 문제링크https://www.acmicpc.net/problem/5635 ➡️ 문제 탐색하기모든 학생을 서로 비교하며 가장 나이가 많은 학생과 가장 어린 학생을 찾는 방식은  O(N^2) 시간 복잡도를 가지므로, N이 작을 때는 효율적이지만 N이 커질수록 비효율적인 방식이 된다. 따라서 학생 리스트를 정렬한 후, 첫 번째와 마지막 학생을 출력하는 방식으로 O(N log N) 시간 복잡도를 가지는 정렬 알고리즘을 선택했다.생일 정보는 '이름, 일, 월, 연도' 형태로 주어지며, 이를 2차원 배열로 저장하여 정렬한다. 정렬 기준은 연도 -> 월 -> 일 순으로 오름차순 정렬하여 생일이 빠를수록 배열의 앞쪽에 오게 한다.입력 데이터는 행 * 4열의 2차원 .. 2024. 8. 8.
파이썬 Python | 알고리즘 | 백준 단어 정렬 ⭕ 파이썬 Python | 알고리즘 | 백준 단어 정렬➡️ 문제링크https://www.acmicpc.net/problem/1181 ➡️ 문제 탐색하기우선, 몇 개의 단어를 처리할지를 미리 알아야 하기 때문에 단어의 개수를 먼저 입력받는 것이 필요하다. 처음에는 단어를 리스트에 저장하려 했으나, 문제 조건에서 중복을 제거하라는 것을 보고 set을 사용하도록 변경했다. set은 중복을 자동으로 제거하는 특성이 있다. 따라서, 단어를 하나의 리스트에 저장하는 대신, 중복된 단어를 제거하기 위해 set을 사용한다. set에 원소 하나를 추가하는 시간복잡도는 O(1)이다. N개의 단어들을 set에 넣어야 하므로 , 총 시간복잡도는 O(N)이다. N은 최대 20,000개로 연산 20,000번은 시간 2초내에 충분.. 2024. 8. 7.
파이썬 Python | 알고리즘 | 백준 나이순 정렬 ⭕ 파이썬 Python | 알고리즘 | 백준 나이순 정렬➡️ 문제링크https://www.acmicpc.net/problem/10814 ➡️ 문제 탐색하기2차원 배열을 사용하여 0번째 인덱스에 나이(age)를, 1번째 인덱스에 이름(name)을 저장하고, 나이끼리 비교하면 될 것 같았다. 하지만, 분명 2차원 배열보다 더 좋은 방법이 있을 것 같다는 고민이 들었다. 찾지 못했다. ㅎㅎ 그렇지만 시간복잡도에 있어서 여유 있다고 생각된다. ➡️ 코드 설계하기우선, 회원의 수를 정하기 위한 숫자를 input() 함수를 사용하여 입력받는다.한 줄씩 나이와 이름을 입력받아 2차원 배열 [나이, 이름]에 저장하는 방식으로 설계했다.나이순으로 정렬하는 방법을 고민했는데, sort 함수를 사용하면 어떨지 생각해 봤다... 2024. 8. 6.
파이썬 Python | 알고리즘 | 백준 일곱 난쟁이 ⭕ 파이썬 Python | 알고리즘 | 백준 일곱 난쟁이➡️ 문제링크https://www.acmicpc.net/problem/2309 ➡️ 문제 탐색하기난쟁이의 수가 9명으로, input의 크기가 매우 작습니다. 7명을 선택하는 모든 경우의 수를 탐색할 수 있을지 생각 해봅시다. 이렇게 모든 경우를 탐색하는 것을 완전 탐색이라고 부르며, 완전탐색은 보통 input의 크기가 작을 때  사용 할 수 있습니다. 9명의 난쟁이 중 2명의 난쟁이를 선택하는 모든 경우의 수는 9 * 8로, 총 72가지입니다. 한 가지 경우에 대해 정답인지 판단하기 위해서는 난쟁이의 키의 합을 구하는 단순 연산만 필요합니다. 따라서 2초의 시간 제한안에 아주 넉넉하게 완전 탐색이 가능합니다. 코딩테스트에서는 1억번의 연산이 대략 1.. 2024. 8. 5.
파이썬 Python | 백준 | 문제 10818번: 최소, 최대 ⭕ 파이썬 Python | 백준 | 문제 10818번: 최소, 최대➡️ 문제 설명N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 예제 입력 1 520 10 35 30 7 예제 출력 1 7 35 문제 출처문제를 만든 사람: baekjoon데이터를 추가한 사람: lina, topology 알고리즘 분류수학구현 ➡️ 접근 방법 1: 직접 구현첫 번째 접근 방법은 직접 최솟값과.. 2024. 6. 13.
파이썬 Python | 알고리즘 | ⭐⭐⭐⭐ ArrayList ⭕ 파이썬 Python | 알고리즘 | ⭐⭐⭐⭐ ArrayList➡️ ArrayListArrayList는 배열과 유사한 자료 구조입니다. 배열은 데이터가 연속적으로 저장된다는 점에서 ArrayList와 차이가 있지만, 이해를 돕기 위해 배열과 유사하다고 생각할 수 있습니다. 알고리즘 문제에서는 배열의 삽입과 삭제가 빈번히 일어나므로 시간 복잡도와의 싸움이 자주 발생합니다. 따라서 삽입이나 삭제를 시간 복잡도를 고려하지 않고 무작위로 수행하면 문제를 해결하지 못할 수 있습니다.ArrayList의 특징연속된 메모리 공간: ArrayList는 연속된 메모리 공간에 데이터를 저장합니다.원하는 위치의 값 얻기: 특정 위치의 요소에 접근할 때 O(1)의 시간 복잡도를 가집니다.삽입 및 삭제: 중간에 요소를 삽입하거.. 2024. 6. 13.
파이썬 Python | 입력 처리의 모든 것: 정수와 문자열에서 2차원 배열까지 ⭕ 파이썬 Python | 입력 처리의 모든 것: 정수와 문자열에서 2차원 배열까지정수➡️  ⭐ ⭐ ⭐ 한 줄을 입력받기 한 줄에 입력된 여러 값을 정수로 변환하여 변수에 저장하는 방법입니다.# 한 줄을 입력받아 정수로 변환a, b = map(int, input().split())print(a, b) # 예시 입력: 3 5, 출력: 3 5  input(): 사용자로부터 한 줄의 문자열 입력을 받습니다. 예시: "3 5"split(): 입력받은 문자열을 공백을 기준으로 분리하여 리스트로 반환합니다. 예시: ["3", "5"]map(int, ...): split()으로 분리된 문자열 리스트의 각 요소를 정수로 변환합니다. 예시: [3, 5]a, b = ...: 변환된 정수 리스트의 값을 각각 a와 b 변수.. 2024. 6. 12.
파이썬 Python | 알고리즘 | 카카오 개발자 코딩테스트 및 오픈채팅방 알고리즘 ⭕ 파이썬 Python | 알고리즘 | 카카오 개발자 코딩테스트 및 오픈채팅방 알고리즘카카오의 핵심은 카카오톡입니다. 카카오의 신입 공개 채용 코딩 테스트 문제는 대학교 학부 과정에서 배우는 기초 알고리즘에 충실하지만, 문자열 기반 채팅 애플리케이션인 카카오톡은 카카오의 핵심인 만큼 문자열과 관련된 알고리즘이 항상 출제됩니다. ➡️ 2020년 카카오 개발자 신입 공개 채용 1차 1번 오픈채팅방 문제[프로그래머스 문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42888)문제 설명카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있으며, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있습니다. 신입사원인 김크루.. 2024. 6. 12.
파이썬 Python | 알고리즘 | 시간 복잡도 ⭕ 파이썬 Python | 알고리즘 | 시간 복잡도컴퓨터는 1초에 약 1억 정도의 연산을 할 수 있다고 가정합니다. ➡️ 알고리즘이 왜 필요한가?구글 검색엔진을 예로 들어보겠습니다. 우리가 구글을 통해 검색할 때, 전 세계에서 업로드된 모든 게시물을 검색 키워드와 비교하여 찾으려 한다면 수백 초 이상의 시간이 걸릴 것입니다. 하지만 실제로 구글과 유튜브는 검색창에 키워드를 입력했을 때 빠르면 1초 안에, 느려도 몇 초 안에 검색 결과를 보여줍니다. 이는 효율적인 알고리즘 덕분입니다. 이러한 이유로 대기업에서는 개발자를 채용할 때 알고리즘 시험을 보며, 개발자들에게 있어서 알고리즘은 필수적인 기술입니다. ➡️ 그래서 구글 검색 엔진은?구글의 검색 알고리즘은 비밀에 부쳐져 있지만, 실무적인 개발 이야기로 추.. 2024. 6. 12.
파이썬 Python | 문자열: count 함수 ⭕ 파이썬 Python | 문자열: count 함수파이썬에서 문자열의 count() 함수는 매우 유용한 메서드 중 하나입니다. 이 메서드는 문자열 내에서 특정 문자나 문자열의 등장 횟수를 세어서 그 수를 반환합니다. 이를 통해 데이터 분석이나 텍스트 처리에서 문자의 빈도를 파악할 때 많이 사용됩니다. ➡️ 함수의 구조string.count(x, start, end)x: 찾고자 하는 문자 또는 문자열입니다.start: 검색을 시작할 인덱스입니다 (이 인덱스를 포함).end: 검색을 종료할 인덱스입니다 (이 인덱스는 포함되지 않음). ➡️ 함수의 특징대소문자 구분: 'A'와 'a'는 다르게 취급됩니다.범용성: 단일 문자뿐만 아니라 문자열도 검색 가능합니다.범위 지정: start와 end를 설정하지 않으면 기.. 2024. 4. 21.
파이썬 Python | 알고리즘 | Greedy algorithm(그리디 알고리즘, 탐욕법) ⭕ 파이썬 Python | 알고리즘 | Greedy algorithm(그리디 알고리즘, 탐욕법) 현재 상황에서 가장 좋아 보이는 선택을 연속적으로 하여 최종적인 해결책에 도달하는 방식 문제를 해결하기 위해 순간마다 가장 최선의 선택을 해나가며, 각 단계에서의 선택이 그 이후의 선택들에게 제약을 주지 않는 방향으로 진행되어야 함 정당성 분석: 반드시 그 선택이 실제로 최적해에 도달할 수 있다는 것을 증명하는 정당성 분석이 필요함 ➡️ 조건 탐욕스러운 선택 조건(Greedy Choice Property): 우리가 한 선택이 다음 선택과 나머지 문제 해결에 영향을 주지 않고, 그 선택이 최종적으로 최적의 해결책을 가져다 줄 수 있다는 것 최적 부분 구조 조건(Optimal Substructure): 큰 문제를.. 2024. 3. 9.
파이썬 Python | 알고리즘 | Coding Test 준비 ⭕ 파이썬 Python | 알고리즘 | Coding Test 준비 문제 해결 역량(알고리즘 및 자료구조)에 관한 학습 기록 레퍼지토리 자주 사용하는 알고리즘 코드를 라이브러리화 ➡️ 사용 언어 변경: Java에서 Python으로 2024년 03월 06일부터 Python을 주 사용 언어로 전환함 다양한 프로그래밍 언어에 대한 학습 욕구 특히, Python은 풍부한 라이브러리 지원으로 알고리즘 학습에 집중하기 용이(예시, 문자열 처리가 다른 언어에 비해 간결하고 쉬움) 따라서, 다양한 상황에 능동적이고 쉽게 대응 가능 ⭕ 학습 계획 ➡️ 알고리즘 개념 학습 학습 내용: 그리디, 구현, DFS, BFS, 정렬, 이진 탐색, 다이나믹 프로그래밍, 최단 경로, 그래프 이론 등 학습 자료: 나동빈님의 YouTube.. 2024. 3. 9.
자바 Java | 알고리즘 | 배열 ⭕ 자바 Java | 알고리즘 | 배열 배열은 동일한 자료형의 데이터를 일렬로 나열한 자료구조입니다. 각 요소는 인덱스를 통해 접근할 수 있습니다. 배열은 프로그래밍에서 매우 일반적으로 사용되며, 메모리 상에서 연속된 공간에 요소를 저장합니다. ➡️ 배열의 특징 인덱스를 사용하여 값에 바로 접근할 수 있다: 배열은 각 요소마다 고유한 인덱스가 있으므로, 해당 인덱스를 사용하여 배열 내의 요소에 직접 접근할 수 있습니다. 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다: 배열의 특정 위치에 새로운 값을 삽입하거나 삭제하려면, 해당 위치 이후의 모든 요소를 이동시켜야 합니다. 이는 성능상의 문제를 유발할 수 있습니다. 배열의 크기는 선언할 때 지정할 수 있으며, 변경할 수 없다: 배열을 선언.. 2024. 3. 6.
자바 Java | 알고리즘 | 자료구조(Data Structure) - 배열(Array) 리스트(List) ⭕ 자바 Java | 알고리즘 | 자료구조(Data Structure) - 배열(Array) 리스(List) 두 가지 주요 자료구조인 배열과 리스트는 각각의 특징에 따라 적절한 상황에서 선택되어 사용됩니다. ➡️ 배열(Array) 배열은 연속된 메모리 공간에 값을 저장하는 자료구조입니다. 각 원소는 고유한 인덱스를 가지고 있어 해당 인덱스를 통해 직접 참조할 수 있습니다. int[] numbers = {1, 3, 5, 7, 9}; 배열의 특징 인덱스를 통한 직접 접근: 배열은 각 원소가 고유한 인덱스를 가지므로, 해당 인덱스를 사용하여 빠르게 값을 접근할 수 있습니다. 값의 삽입 및 삭제 어려움: 새로운 값을 삽입하거나 삭제할 때 주변의 값을 이동시켜야 하므로 연산이 복잡합니다. 예를 들어, 두 번째 값.. 2024. 1. 10.
자바 Java | 알고리즘 | 디버깅 ⭕ 자바 Java | 알고리즘 | 디버깅 디버깅은 프로그래밍 과정에서 코드의 논리 오류를 찾아내고 수정하는 중요한 단계입니다. 모든 프로그래머는 실수를 할 수 있으며, 이러한 실수는 코드의 논리 오류로 나타날 수 있습니다. 특히 자바와 같은 언어에서는 디버깅이 더욱 중요한데, 여기에는 몇 가지 핵심적인 이유가 있습니다. 첫째로, 코드 작성 시 실수는 불가피합니다. 논리적인 오류는 문법적인 오류와 달리 컴파일러가 감지하지 못하므로 실행 중에 발견되어야 합니다. 그리고 디버깅을 통해 이러한 오류를 찾아내고 수정할 수 있습니다. 둘째로, 많은 프로그래머들은 문법을 배우는 과정에서 디버깅을 가볍게 여기곤 합니다. 그러나 실제로는 디버깅이 코드 작성 과정에서 필수적인 스킬이며, 특히 코딩테스트를 응시할 때 디버깅.. 2024. 1. 9.
자바 Java | 알고리즘 | 시간복잡도 ⭕ 시간복잡도 시간 복잡도는 알고리즘 선택의 주된 기준 중 하나로, 주어진 문제를 해결하는 데 필요한 연산 횟수를 나타냅니다. 코딩테스트에서는 1억 번의 연산을 1초로 가정하며, 주어진 시간제한 내에 문제를 해결할 수 있어야 합니다. 시간제한이 2초인 경우 최대 2억 번의 연산 안에 답을 도출해야 합니다. ➡️ 시간 복잡도 유형 시간 복잡도는 주로 빅오(O), 빅세타(Θ), 빅오메가(Ω) 세 가지 유형으로 나뉩니다. 빅오(O): 알고리즘의 최악의 경우 시간 복잡도를 나타냅니다. 이는 주어진 입력 데이터에 대해 알고리즘이 최대로 소요될 수 있는 시간을 표현합니다. 코딩테스트에서는 주로 빅오를 고려하여야 합니다. 특히 TEST SET이 복잡하게 나오는 상황에서는 항상 최악의 경우를 염두에 두고 알고리즘을 선.. 2024. 1. 8.
자바 JAVA | 백준 9498번 시험 성적 | 조건문을 이용한 시험 성적 출력 프로그램 https://www.acmicpc.net/problem/9498 9498번: 시험 성적시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.www.acmicpc.net ✅ 문제시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.시간 제한: 1 초메모리 제한: 128 MB 💡 입력첫째 줄에 시험 점수가 주어진다. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 💡 출력시험 성적을 출력한다. 💡 예제 입력 1100 💡 예제 출력 1A ✅ 해결💡 해결 계획.. 2022. 9. 28.
자바 JAVA | 백준 1330번 두 수 비교하기 | 조건문(if-else) 활용 https://www.acmicpc.net/problem/1330 1330번: 두 수 비교하기두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.www.acmicpc.net ✅ 문제두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.시간 제한: 1 초메모리 제한: 512 MB 💡 입력첫째 줄에 A와 B가 주어진다. A와 B는 공백 한 칸으로 구분되어 있다. 💡 출력첫째 줄에 다음 세 가지 중 하나를 출력한다.A가 B보다 큰 경우에는 '>'를 출력한다.A가 B보다 작은 경우에는 'A와 B가 같은 경우에는 '=='를 출력한다. 💡 출력-10,000 ≤ A, B ≤ 10,000 💡 예제 입력 11 2 💡 예제 출력 1 💡 예제 입력 210 2 💡 예제.. 2022. 9. 28.
자바 JAVA | 백준 25083번 새싹 | 문자열 출력 방법과 이스케이프 문자 활용 예제 https://www.acmicpc.net/problem/25083 25083번: 새싹아래 예제와 같이 새싹을 출력하시오.www.acmicpc.net ✅ 문제아래 예제와 같이 새싹을 출력하시오.시간 제한: 1 초메모리 제한: 1024 MB 💡 입력입력은 없다. 💡 출력새싹을 출력한다. 💡 예제 입력 1없음. 💡 예제 출력 1 ,r'"7r`-_ ,' ,/ \. ". L_r' `~\/ | | ✅ 해결💡  해결 계획주어진 출력 예제에 따라 새싹 모양을 문자열로 정의한다.문자열을 줄 단위로 출력하여 새싹을 출력한다. 💡 코드 1 (성공)시간 복잡도는 O(1)이다.입력값에 따라 실행 시간에 영향을 받지 않는다. 출력 예제에 맞게 문자열을 정의하고, 문자열을 줄 .. 2022. 9. 28.
반응형