[Python] 백준/BOJ 15655번: N과 M (6) (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열고른 수열은 오름차순이어야 한다. 💡 Approach입력받은 num 리스트에서 순서 없이 M개의 원소를 뽑는다. (조합) ✏️ Solution (itertools)import sysfrom itertools import combinationsinput = sys.stdin.readlineN, M = map(int, input().split())num = sorted(map(int, input().split()))print('\n'.join(' '.join(map(str, p)) f..
[Python] 백준/BOJ 15654번: N과 M (5) (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열 💡 Approach입력받은 num 리스트에서 M개의 원소를 뽑는다. (순열) ✏️ Solution (itertools)import sysfrom itertools import permutationsinput = sys.stdin.readlineN, M = map(int, input().split())num = sorted(list(map(int, input().split())))print('\n'.join(' '.join(map(str, p)) for p in permutatio..
[Python] 백준/BOJ 15652번: N과 M (4) (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다.고른 수열은 비내림차순이어야 한다.길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 💡 Approach중복 조합 기본 문제이다.itertools를 활용해서 푸는 방법과 직접 구현하는 방법 두 가지로 풀어보았다. ✏️ Solution (itertools)import sysfrom itertools import combinations_with_replacementinput = sys.stdin.readlineN, M = map(int, ..
[Python] 백준/BOJ 15651번: N과 M (3) (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 M개를 고른 수열같은 수를 여러 번 골라도 된다. 💡 Approach중복 순열 기본 문제이다.itertools를 활용해서 푸는 방법과 직접 구현하는 방법 두 가지로 풀어보았다. ✏️ Solution (itertools)import sysfrom itertools import productinput = sys.stdin.readlineN, M = map(int, input().split())print('\n'.join(' '.join(map(str, p)) for p in product(range(1, N + 1), repeat=M)))..
[Python] 백준/BOJ 15650번: N과 M (2) (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열고른 수열은 오름차순이어야 한다. 💡 Approach조합 기본 문제이다.itertools를 활용해서 푸는 방법과 직접 구현하는 방법 두 가지로 풀어보았다. ✏️ Solution (itertools)import sysfrom itertools import combinationsinput = sys.stdin.readlineN, M = map(int, input().split())print('\n'.join(' '.join(map(str, p)) for p in combinations(range(1, N + 1)..
[Python] 백준/BOJ 15649번: N과 M (1) (Silver 3)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 💡 Approach순열 기본 문제이다.itertools를 활용해서 푸는 방법과 직접 구현하는 방법 두 가지로 풀어보았다. ✏️ Solution (itertools)import sysfrom itertools import permutationsinput = sys.stdin.readlineN, M = map(int, input().split())print('\n'.join(' '.join(map(str, p)) for p in permutations(range(1, N + 1), M))) ✏️ Solution..
[Python] 백준/BOJ 24523번: 내 뒤에 나와 다른 수 (Silver 2)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 길이가 N인 수열 A_1 A_2 ... A_N이 주어진다. 1 ≤ i ≤ N인 정수 i마다 i ≤ N이고 A_i ≠ A_j인 정수 j중 최솟값을 출력하라. 만약 이러한 j가 없다면 -1을 출력하라. 💡 Approach처음엔 이중반복문으로 푸는 방법밖에 생각 안 났다... ㅜㅜ근데 시간 계산해보니 이중반복문으로 풀면 시간 터져서 반복문을 중첩하지 않는 방식을 생각해 보았다... 연속된 A[i]의 값이 같으면 정답인 j도 항상 같다.A[i]의 정답인 j는 시작하는 A[i]에서 자신과 같은 값인 칸들을 건너뛰고 처음으로 다른 값이 나오는 칸의 index이다. 결론은 투 포인터로 풀었다.왼쪽을 가리키는 포인터 하나(l)와 오른쪽을 가리키는 포인터 하나(r)를 뒀다. 두 포..
[Python] 백준/BOJ 27970번: OX (Silver 1)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 O와 X로 이루어진 문자열이 주어진다. 모든 문자를 X로 만들 때까지 다음 연산을 반복할 때, 시행하는 연산의 횟수를 구하시오.문자열의 가장 왼쪽에 있는 O를 X로 바꾸고, 그보다 왼쪽에 있는 X를 전부 O로 바꾼다. 💡 Approach처음에 예제만 봤을 때는 연산이 조금 헷갈렸어서 예제 1의 연산 과정을 정리해 봤다.연산 횟수연산 결과설명0OXO처음 입력받은 문자열이다1XXO가장 왼쪽에 있는 O(i=0)를 X로 바꿨다i=0이기 때문에 왼쪽에 요소가 없다2XXX → OOX가장 왼쪽에 있는 O(i=2)를 X로 바꿨다i=2보다 왼쪽에 있는 X를 전부 O로 바꿨다3XOX 가장 왼쪽에 있는 O(i=0)를 X로 바꿨다i=0이기 때문에 왼쪽에 요소가 없다 4XXX → OXX 가장..