Coding Test 24

[이코테] Chap 5. DFS/BFS

기초 지식탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정이다. 대표적인 탐색 알고리즘에는 DFS와 BFS가 있다. 두 알고리즘의 원리에는 스택, 큐와 같은 기본 자료구조 그리고 재귀 함수가 사용되기 때문에 이에 대한 이해가 전제되어야 한다. 이때 자료구조는 데이터를 표현하고 관리하고 처리하기 위한 구조를 의미한다. 스택스택(Stack)은 박스 쌓기와 유사한 구조로, 후입선출(LIFO) 이다.파이썬에서 스택을 이용할 때엔 기본 리스트의 메서드를 이용하면 된다. ✓ append() : 리스트의 가장 뒤쪽에 데이터 삽입✓ pop() : 리스트의 가장 뒤쪽에서 데이터 꺼냄stack = []stack.append(1) # [1]stack.append(2) # [1, 2]stack.append(3) #..

[백준|실버3] 3273번 두 수의 합 - Python(파이썬)

문제https://www.acmicpc.net/problem/3273✓ 시간 제한: 1초 / 메모리 제한: 128MB n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i  입력첫째 줄에 수열의 크기 n이 주어진다. 다음 줄에는 수열에 포함되는 수가 주어진다. 셋째 줄에는 x가 주어진다. (1 ≤ n ≤ 100000, 1 ≤ x ≤ 2000000) 출력문제의 조건을 만족하는 쌍의 개수를 출력한다. 예제 입력195 12 7 10 9 1 2 3 1113 예제 출력 13첫 번째 풀이 - 시간초과이중 반복문을 이용했다. 시간초과 날거라고 예상은 ..

[이코테] Chap 12. 구현 문제

08. 문자열 재정렬arr = list(input())arr.sort()num = 0i = 0for _ in range(len(arr)): if '0'  문자열을 arr에 리스트로 입력받고 오름차순 정렬을 한다.num은 숫자를 더하기 위한 변수, i는 확인 인덱스를 표시하기 위한 변수이다. 문자열 arr의 길이만큼 반복을 진행한다.i번째 문자가 숫자이면 (0과 9 사이이면) 숫자 합을 구하는 변수 num에 해당 수를 더하고, i번째 문자는 pop한다. 해당 원소를 pop하며 리스트에서 제외했으므로 인덱스 i는 변경하지 않는다.숫자가 아니면 다음 인덱스의 확인을 진행한다. 모든 원소의 확인이 끝나면 숫자가 아닌 남은 문자 arr를 join으로 합치고 num을 문자열로 변환하여 합친다.

[이코테] Chap 4. 구현 (Implementation)

이론구현이란?구현은 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정이다. 어떤 문제든 소스코드를 작성해야 하므로 모든 범위의 코딩 테스트 문제 유형은 구현을 포함한다.하지만 그중에서도 특히 구현 유형이라 부르는 문제들은'풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제'를 의미한다. 다음의 두 문제 유형은 '구현'이 핵심이 되는 경우가 많다.1) 완전 탐색(브루트포스): 모든 경우의 수를 주저 없이 다 계산하는 해결 방법2) 시뮬레이션: 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행 구현하기 어려운 문제- 알고리즘은 간단한데 코드가 지나치게 길어지는 문제- 특정 소수점 자리까지 출력해야 하는 문제- 문자열이 입력으로 주어졌을 때 한 문자 단위로 끊어서 리스트에 넣어야 하는 문제 (파싱..

[프로그래머스] 삼각 달팽이 (Lv.2) - Python(파이썬)

https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요. 제한 사항n은 1 이상 1,000 이하입니다.입출력 예풀이 과정문제 아이디어가 생각나지 않아 40분을 끙끙대다가, 결국 다른 사람의..

그리디 알고리즘(탐욕법) | Greedy Algorithm

그리디 알고리즘이란?그리디 알고리즘은 현재 상황에서 가장 좋아 보이는 것만을 선택하는 알고리즘이다.  가장 좋아보인다는 것은 가장 빠르거나, 저렴하거나 등과 같은 선택을 의미한다.그리디 알고리즘은 미래는 고려하지 않는다. 즉, 현재 선택이 나중에 미칠 영향에 대해서는 고려하지 않고 선택의 순간에 가장 좋은 것을 고르는 것이다. 그렇다면 현재 상황에서 가장 좋아 보인 것을 고른 것이 결론적으로 좋은 결과를 도출할까? 아니다.현재의 최적해가 전체의 최적해를 의미하지는 않는다. 전체의 최적해가 보장되는 조건에서만 그리디 알고리즘을 써야 한다.그렇다면 어떤 조건에서 그리디 알고리즘이 유효할까?  그리디 알고리즘이 유효한 조건그리디 알고리즘이 전체의 최적해를 보장하려면 두 가지 속성이 필요하다.1. 그리디 선택 ..

[코드트리 조별과제] 1주차

숫자로 이루어진 사각형Novice Mid 레벨의 문제 풀이와 복잡도 분석을 해보았다.🔗 문제 바로가기 내 코드def n_by_n_rect(n): i = 1 for _ in range(n): for _ in range(n): print(i, end=' ') i += 1 if i==10: i = 1 print() n = int(input())n_by_n_rect(n) 시간 복잡도 (Time Complexity)코드에서 두 개의 중첩된 루프가 있으며, 각 루프는 n번씩 실행된다. 내부 루프 안의 모든 작업은 상수 시간 O(1)에 수행된다.- 외부 루프: n번 반복- 내부 루프: n번..

Coding Test 2024.07.21

[이코테] Chap 3. 그리디 (Greedy)

정의현재 상황에서 가장 좋아 보이는 것만을 선택하는 알고리즘탐욕적이다 == 현 상황에서 지금 당장 좋은 것만 고른다.현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다.코테 팁그리디 알고리즘 유형의 문제는 매우 다양하다.단순 암기로 모든 유형의 문제를 풀 수는 없다.그리디 알고리즘 유형의 문제는 창의력을 요구한다.특정한 문제를 만났을 때 단순히 현재 상황에서 가장 좋아 보이는 것만 선택해도 문제를 풀 수 있는지 파악할 수 있어야 한다.기준에 따라 좋은 것을 선택하는 알고리즘으로 아래와 같은 기준을 제시해주기도 한다.가장 큰 순서대로가장 작은 순서대로예제 3-2. 큰 수의 법칙문제시간 제한 : 1초메모리 제한 : 128MB'큰 수의 법칙'은 일반적으로 통계 분야에서 다루어지는 내용이지만 동빈이는 본..

[백준] 3009번 네 번째 점 - Python(파이썬)

https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 문제 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다. 출력 직사각형의 네 번째 점의 좌표를 출력한다. 예제 입력 1 5 5 5 7 7 5 예제 출력 1 7 7 예제 입력 2 30 20 10 10 10 20 예제 출력 2 30 10 풀이과정 점의 좌표를 세 번 입력받고, x좌표와 y좌표 각각 1번만 나온 값..

[백준] 11005번 진법 변환2 - Python(파이썬)

https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 입력 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다. 출력..