일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 파이썬
- 재귀함수
- Python
- Virtual Memory
- 정렬
- dfs
- Loss
- 브루트포스
- 완전탐색
- 코딩테스트
- 백준
- two pointer
- 재귀
- OS
- BF
- 코테
- 신나는함수실행
- CS
- Github
- backtracking
- 백트래킹
- ML
- 투포인터
- sort
- 프로그래머스
- Algorithm
- 머신러닝
- python3
- 알고리즘
- 1일1솔
- Today
- Total
목록파이썬 (22)
이것저것 공부 기록하기

문제링크 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제설명 배열이 아니라 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬하는 문제이다. 정렬문제이므로 어차피 문자열로 처리해야 했기에 입력값을 int로 변환하지 않고 문자열 타입 그대로 받았다. 그 후 sorted() 를 취해 문자열을 정렬한 후, "".join() 을 사용했다. 참고 python에서 문자열 자체를 정렬하려면, s.sort()를 쓰면 안된다. string의 경우 첫글자의 주소값으로 참조를 하기에 원본이 변경되면 안되므로, str type에 sort() ..

문제링크 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 문제설명 브루트포스로 푸는 문제이다. 연속으로 666이라는 숫자가 나타나야하므로 문자열로 비교하는 것이 효율적이라고 생각했다. 변수 title을 초기값 666으로 선언해서 title에 1씩 더해갔으며, 주어진 n으로부터 1씩 빼가며 카운팅을 했다. n이 0이 되었을 때의 title을 출력하며 마무리한다. 문제풀이 title = 666 n = int(input()) while n: if ..

문제링크 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 문제설명 [아이디어1] N x M 판을 전체 경우의 수로 돌려야 한다. 그러기 위해서는 인덱스가 8을 넘지 않도록 조정을 해줘야 한다. 9x9에서 움직여서 조사할 수 있는 경우의 수는 2x2 = 4개이며, 10x10에서 움직여서 조사할 수 있는 경우의 수는 3x3 = 9개이고, 11x11에서 움직여서 조사할 수 있는 경우의 수는 4x4 = 16개이다. 따라서 i는 N-7의 범위에서..

문제링크 https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 문제설명 n명 집단에서 각 사람의 덩치 등수는 자신보다 더 '큰 덩치'의 사람의 수로 정해진다. 또한, 가장 큰 덩치의 사람은 키와 몸무게가 모두 어떤 사람보다도 더 커야하며 그 등수는 1이다. 따라서 자신보다 더 큰 덩치의 사람이 k명이면 그 사람의 덩치 등수는 k+1이다. 이 때, 같은 덩치 등수를 가진 사람은 여러 명도 가능하므로, 2중으로 for문을 돌면서 요소 간 완..

문제링크 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 재귀함수로 푸는 문제이다. 규칙파악이 포인트이고, 그 이후에는 재귀로 풀면 된다. 규칙파악 일정하게 가운데가 뚫린 정사각형 패턴이 반복되고 있다. 예를 들어, 3(=3^1)일 때는 가운데에 공백이 있고 1(=3^0)개 씩의 별이 찍히고 있다. 따라서 패턴은 다음과 같다. 3^i일 때 가운데를 공백으로 하고, 3^(i-1) 개 씩의 별 찍는다. 또한, 정사각형의 ..

문제링크 https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 문제풀이 주어진 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 문제이므로 투포인터로 풀이가 가능한 문제이다. 수열의 길이 N과 타겟으로 봐야할 S의 범위는 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000) 이므로 시간초과에 유의해야한다. 처음에는 아무 생각 없이 주어진 수열 arr의 길이를..

문제링크 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 문제풀이 에라토스테네스의 체 기반으로 풀었다. m, n이 1부터 입력될 수 있기 때문에 sieve의 0, 1을 False로 초기값을 설정해야 한다. m, n = map(int, input().split()) x = int(n**0.5) sieve = [False,False] + [True] * (n-1) for i in range(2, x+1): if sieve[i] == True: for j in range(2*i, ..

문제링크 https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 문제풀이 n, k = map(int, input().split()) sieve = [True] * (n+1) m = int(n**0.5) chk = [] for i in range(2,m+1): if sieve[i] == True: chk.append(i) for j in range(2*i, n+1, i): sieve[j] = False if j not in chk: chk.append(j) chk += [i for i in range(m+1,n+1) if sieve[i] =..