목차 문제풀이를 하기 전에 이번 단계의 제목인 집합과 맵 그리고 이 단계가 시사하는 목적에 대해 요약하자면 지금까지는 리스트를 사용해도 시간이 오래 걸리지 않는 적은 수의 데이터를 다루었다면 앞으로는 데이터가 커지기 때문에 문제의 조건을 보고 상황에 맞게 집합 set이나 맵 (해시맵을 뜻함) dict 등을 사용하도록 한다. 따라서 숏코딩 보다는 이에 중점을 두어서 문제 풀이를 하겠다. 숫자 카드(#10815) Problem 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. Hint 두개의 리스트를 만드는건 불가피하다. 집합과 리스트의 차이는 집합은..
백준
목차 문제풀이를 하기 전에 이번 단계의 제목인 정렬과 이 단계가 시사하는 목적에 대해 요약하자면 여러가지 수열을 원하는 조건을 통하여 정렬시키는 알고리즘에는 여러가지 방법이 있는데 각 정렬의 방법마다 정렬에 걸리는 시간복잡도가 Best 최선의 경우 Average 평균의 경우 Worst 최악의 경우 등 데이터의 분포 등에 따라서 복잡도가 달라지는데 이번 목록에는 여러가지 정렬에 관련된 개념을 익히고 실습해보는것이 목적이다. 따라서 이번 단계에서는 숏코딩 보다는 정렬의 여러 방법을 사용하며 문제풀이를 하는 방향으로 풀이를 하겠다. 수많은 사람들이 알고리즘으 시간 복잡도에 대한 자세한 포스팅은 많이 존재하기 때문에 간단히 표를 통한 차이 정도만 넣어보았다. 각 정렬 방식별 B Av W 그리고 space 복잡도..
목차 문제풀이를 하기 전에 이번 단계의 제목인 브루트 포스 대해서 간단히 요약하자면 Brute Force 란 직역하게 된다면 짐승같은 난폭한 힘 이라는 뜻이고 프로그래밍에서는 별도의 필터과정을 거치지 않고 모든 경우의 수를 전부 반복하여 결과값을 도출해내는 풀이 방식을 뜻한다. 따라서 이번 단계에서는 숏코딩 보다는 브루트포스를 사용하며 문제풀이를 하는 방향으로 풀이를 하겠다 블랙잭(#2798) Problem 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의..
목차 문제풀이를 하기 전에 이번 단계의 제목인 재귀의 개념에 대해서 간단히 요약하자면 재귀함수란, 어떤 함수에서 자신을 다시 호출하여 작업을 수행하는 방식의 함수를 의미한다. 반복을 하되 문제에서 원한 조건을 만족시키기 위해 함수의 인수 등을 바꾸어 가면서 함수에 적용시켜줘야한다. 따라서 이번 단계에서는 숏코딩 보다는 재귀를 사용하며 문제풀이를 하는 방향으로 풀이를 하겠다 팩토리얼(#10872) Problem 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. Hint N!은 N부터 1씩 감소하는 정수를 계속 곱해가는 연산방법이다. Solution 재귀을 이용한 풀이 def fac(n): global res if n==0: print(res) return else: r..
목차 소수 찾기(#1978) Problem 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. Hint 소수의 특징을 생각해보면 n으로 나누었을때(1과 자신을 제외한) 나누어 떨어지면 안된다. Solution n = int(input()) r=0 for i in map(int,input().split()): c=1 for j in range(i-2): if i%(j+2)==0: c=0 if i==1: r-=1 r+=c print(r) 1로 나누었을때도 나누어 떨어진다고 인식하기 때문에 나누는 인자를 2부터 시작하게 코딩하였다. 소수(#2581) Problem 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램..
목차 구구단 (#2739) Hint 문제 내 출력창에 있는 형식 (spacebar) 에 주의 Solution a=int(input()) for i in range(1,10): print(f'{a} * {i} = {a*i}') A+B - 3 (#10950) Hint 입출력을 하나의 반복문에 넣기는 어렵다고 판단하여 리스트를 사용하였다. 출력 조건을 충족 시키려고 print(*리스트변수명 , sep='\n') 위와 같이 표현하였다. Solution count = int(input()) result = [] for i in range(count): a, b= map(int ,input().split()) result.append(a+b) print(*result, sep='\n') 합 (#8393) Hint ..