본문 바로가기

코딩테스트

[백준| 단계별로 풀어보기 4단계 1차원 배열 | Python] 3052번 나머지 1. 문제 목적 이 문제의 목적은 모듈로 연산과 자료 구조를 활용하는 방법을 학습하는 데 있습니다. 모듈로 연산은 프로그래밍에서 자주 사용되는 연산 중 하나로, 특정 값으로 나눈 나머지를 구하는 연산입니다. 이 문제를 통해 모듈로 연산의 활용 방법과, 중복을 제거하며 데이터를 효율적으로 관리하는 자료구조인 세트(set)의 사용법을 익힐 수 있습니다. 2. 핵심 개념 모듈로 연산(%): 특정 수로 나눈 나머지를 구하는 연산입니다. 이 문제에서는 입력된 수를 42로 나눈 나머지를 구합니다. 세트(Set): 파이썬의 기본 자료구조 중 하나로, 중복된 값을 허용하지 않으며 순서가 없는 컬렉션입니다. 세트를 사용하여 중복 없이 나머지의 종류를 쉽게 관리할 수 있습니다. 3. 문제 해결 절차 사용자로부터 10개의 .. 더보기
[백준| 단계별로 풀어보기 4단계 1차원 배열 | Python] 10813번 공 바꾸기 1. 문제 목적 이 문제는 리스트의 인덱싱과 요소 교환을 통해 파이썬에서의 기본적인 데이터 조작 방법을 학습하는 데 중점을 둡니다. 이를 통해 사용자는 데이터 구조에 저장된 요소에 접근, 수정하는 기본적인 방법을 익히게 됩니다. 2. 핵심 개념 리스트 인덱싱: 리스트에서 특정 위치의 요소에 접근하는 방법. 리스트[인덱스]의 형태로 사용됩니다. 파이썬의 인덱스는 0부터 시작합니다. 요소 교환: 파이썬에서 두 변수의 값을 교환하는 가장 간단한 방법은 a, b = b, a의 형태로 사용하는 것입니다. 이 문제에서는 이 방법을 사용하여 두 바구니의 공을 교환합니다. 3. 문제 해결 절차 초기 설정: N개의 바구니를 준비하고 각 바구니에 1부터 N까지 순서대로 번호를 부여합니다. 교환 명령 실행: 주어진 교환 명.. 더보기
[백준| 단계별로 풀어보기 4단계 1차원 배열 | Python] 2562번 최댓값 1. 문제 목적 9개의 서로 다른 자연수가 주어졌을 때, 이 중 최대값을 찾고, 그 최대값이 몇 번째 수인지를 알아내는 문제입니다. 이 문제를 통해 학습할 수 있는 주요 목적은 리스트의 기본적인 활용 방법과, 리스트 내에서 최대값을 찾는 과정 및 그 위치를 식별하는 방법을 익히는 것입니다. 2. 핵심 개념 리스트: Python에서 여러 데이터를 연속적으로 관리할 수 있는 기본적인 자료 구조입니다. 본 문제에서는 9개의 자연수를 저장하고 관리하는 데 사용됩니다. max() 함수: Python 내장 함수로, 주어진 리스트나 여러 인자 중에서 최대값을 반환합니다. index() 메서드: 리스트에서 특정 값의 위치를 찾을 때 사용하는 메서드입니다. 찾고자 하는 값의 첫 번째 인덱스를 반환합니다. 3. 문제 해결.. 더보기
[백준| 단계별로 풀어보기 3단계 반복문 | Python] 10952번 A + B 입력처리 문제 목적 입력된 두 정수 A와 B의 합을 출력하고, 입력의 끝에는 0 두 개가 주어지는 조건에서 프로그램을 종료하는 방법을 구현하는 것입니다. 이 문제는 반복문과 조건문을 사용하여 입력 처리를 중단하는 조건을 설정하는 방법에 대해 이해하고 연습하는 데 목적이 있습니다. 핵심 개념 반복문 사용: 특정 조건이 충족될 때까지 작업을 반복적으로 실행합니다. 조건문: 특정 조건을 평가하여 프로그램의 흐름을 제어합니다. 입력 처리: 사용자로부터 입력받은 데이터를 처리하고, 특정 조건에 따라 반복 입력을 종료합니다. 문제 해결 절차 무한 반복 설정: 사용자로부터 반복적으로 입력을 받기 위해 무한 반복문을 설정합니다. 데이터 입력 받기: 사용자로부터 두 정수 A와 B를 입력받습니다. 종료 조건 검사: 입력받은 두 정.. 더보기
[백준| 단계별로 풀어보기 3단계 반복문 | Python] 15552번 빠른 A + B 문제 목적 백준 15552번 문제는 빠르게 여러 쌍의 정수를 입력받아 각 쌍의 합을 출력하는 문제입니다. 이 문제는 대량의 데이터를 효율적으로 처리하는 방법을 연습하는 데 목적이 있으며, 특히 Python에서 입출력 속도를 향상시키기 위한 기법을 익히는 데 중점을 둡니다. 핵심 개념 빠른 입출력 처리: 표준 입력(input())과 출력(print()) 대신, 더 빠른 입출력 함수를 사용하는 방법을 이해합니다. 반복문: 주어진 데이터 쌍을 처리하기 위해 반복문을 사용하는 방법을 익힙니다. 문제 해결 절차 데이터 개수 입력 받기: 테스트 케이스의 개수 T를 입력받습니다. 데이터 쌍 처리: T번 반복하며 각 쌍의 정수 A, B를 입력받고, 그 합을 계산합니다. 결과 출력: 계산된 각 합을 출력합니다. 단, 빠.. 더보기
[큰돌 C++ 알고리즘 코딩테스트 | 강의 0주차] split()함수 1. 학습목표 split()함수에 대해 이해할수 있다. 2.필요 개념 문장정리 split()함수란 다른 프로그래밍 언어에서도 문자열을 특정 문자열을 기준으로 쪼개어서 배열화시키는 함수라는 의미로 사용되는데 C++에서는 STL에서 split() 함수를 지원하지 않는다. 3. 코드작성 while ((pos = input.find(delimiter)) != string::npos) { // 특정문자열을 찾아 위치 반환 token = input.substr(0,pos); // 문자열 저장 ret.push_back(token); // 토큰결과를 저장할 ret 추가 input.erase(0, pos + delimiter.length()); // input 문자열에서 delimiter를 기준으로 토큰을 추출하고 각각.. 더보기
[큰돌 C++ 알고리즘 코딩테스트 | 강의 0주차] 조합 조합은 순서에 관계없이 경우의 수를 구해내는 것을 의미한다. 재귀함수를 이용한 조합 재귀함수는 반드시 암기해야 한다. 3자리 이하인 경우에는 중첩for문이 빠를 수 있다. 더보기
[큰돌 C++ 알고리즘 코딩테스트 | 강의 0주차] 재귀함수(recursion) 재귀함수 재귀함수(Recursion)는 정의 단계에서 자신을 재참조하는 함수 전달되는 상태인 매개변수가 달라질 뿐 똑같은 일을 하는 함수 큰 문제를 작은 부분문제로 나눠서 풀 때 사용합니다. 재귀함수 사용시 주의사항 반드시 기저사례를 써야 한다. (종료조건) if(n == 1 || n == 0) return 1; 사이클이 있다면 쓰면 안된다. ex) f(a)가 f(b)를 호출한 뒤 f(b)가 다시 f(a)를 호출하는 것 반복문으로 될 거같으면 반복문으로. (함수호출에 대한 코스트가 든다.) 팩토리얼과 피보나치에서의 활용 더보기