[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 가장..
[Python] 백준/BOJ 19538번: 루머 (Gold 4)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 당신은 루머를 믿는가?한 유명 심리학 실험에서는 사람들에게 두 개의 줄을 보여주고, 어떤 줄이 더 긴지 말하라 했다. 사실 한 사람을 제외하고 나머지는 실험자에 의해 사전에 조작된 사람들이었다. 조작된 사람들은 사실상 더 짧은 줄을 더 길다고 말했다. 주변 모두가 같은 답변을 하자, 진짜 피실험자 또한 짧은 줄이 더 길다고 말했다. 이 실험은 사람들이 주변인의 영향을 강하게 받는다는 것을 보여주었는데, 루머도 이와 같다.루머는 최초 유포자로부터 시작한다. 최초 유포자는 여러 명일 수 있고, 최초 유포자를 제외하고 스스로 루머를 만들어 믿는 사람은 없다.매분 루머를 믿는 사람은 모든 주변인에게 루머를 동시에 퍼트리며, 군중 속 사람은 주변인의 절반 이상이 루머를 믿을 때 ..
[Python] 백준/BOJ 13700번: 완전 범죄 (Silver 1)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 홍익대학교 근처에 있는 오락실에 새로운 게임이 들어왔다. 이 게임을 클리어하려면 방금 막 금은방을 턴 마포구 대도 X가 되어 아무에게도 들키지 않고 X의 집에 무사히 도착해야 한다. 게임은 오직 좌우 버튼 두 개로만 진행되고 규칙은 아래와 같다.마포구의 모든 건물은 일렬로 나열되어 있고 각 건물에는 1번부터 N번까지 번호가 지정되어 있다. 마포구에는 K개의 경찰서가 있고 경찰 내부에는 이미 X의 얼굴이 알려졌다.게임이 시작될 때 X는 막 범행을 끝내고 금은방 S 안에 있다.X는 자신의 집 D에 마포구를 떠날 수 있는 비밀 통로를 만들어놓았다. 따라서 경찰에게 발각되지 않고 무사히 집으로 돌아가야 한다.좌(←) 버튼을 누르면 후방으로 달리고, 우(→) 버튼을 누르면 전방으..
[Python] 백준/BOJ 14651번: 걷다보니 신천역 삼 (Large) (Silver 1)
·
Algorithm/백준 (BOJ)
💻 Problem문제 보러 가기 욱제는 ‘삼’이란 음절을 참 좋아한다. 인삼, 홍삼, 해삼, 삼성, 이춘삼(李春森), 삼식이, 삼시세끼, ㄴㄴ 그거 안 삼, 삼과 죽음, 알았삼, 걷다보니 신천역 삼, 그리고 특히 일이삼을 좋아한다. 그래서 욱제는 3을 가지고 놀아보기로 했삼.3개 숫자(0, 1, 2)만 가지고 N자리 3의 배수를 만들어 보삼. 만드는 배수는 자연수 이삼. 0으로 시작하는 수는 만들 수 없는 수 이삼. 3의 배수가 몇 개나 나올 수 있삼? N을 입력 받으삼 (1 ≤ N ≤ 33,333) 💡 Approach걷다보니 신천역 삼 문제는 Small이 있고 Large가 있다.Small 문제 풀이Small 보다 Large가 입력 범위가 훨씬 커서 중복 순열로 풀면 시간 초과가 뜬다. 중복 순열 ..