개발/CS/알고리즘

구름 찾기 깃발 N,K = map(int,input().split()) mp = [list(map(int,input().split())) for _ in range(N)] m = [[0 for _ in range(N)] for _ in range(N)] def check(x, y): global m for i in range(x-1,x+2,1): for j in range(y-1,y+2,1): if i
문자열 나누기 n = int(input()) st = input() # 최적화된 코드 # 모든 부분 문자열 찾기 (중복 제외, 길이가 n-2 이하인 부분 문자열만 포함) all_substrings = set() for i in range(n): for j in range(i + 1, n + 1): if len(st[i:j]) > n - 2: continue all_substrings.add(st[i:j]) all_substrings = sorted(list(all_substrings)) # 부분 문자열 인덱스 캐싱 substring_index_mapping = {substring: idx for idx, substring in enumerate(all_substrings)} # 최대 점수를 저장할 변수 ..
문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다. 예를 들어, 한 줄에 연속해있는 나무의 높이가 20, 15, 10, 17이라고 하자. 상근이가 높이를 15로 지정했다면, 나무를 자른 뒤의 높이는 15, 15..
문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 풀이 def binary_search(arr, target): left, right = 0, len(arr) - 1 while left
옵시디언으로 문제를 푸는데, 블로그 포스팅 할 때 프론트 매터가 올라오는 문제가 있어서 포스트를 분리하였다 그렇다고, 티스토리에서 수정하면 코드 블록이 일렬로 나오는 문제가 있어 진퇴양난의 상황이다 아무튼 1주차 문제는 구현 위주라 아직 어려움을 못느끼고 있다 재밌다! 문제 풀이 3일차 문제 n = int(input()) result = 0 operations = {'+': lambda x, m: x + m, '/': lambda x, m: x // m, '-': lambda x, m: x - m, '*': lambda x, m: x * m} for _ in range(n): x, v, m = input().split() result += operations[v](int(x), int(m)) print(..
문제 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] args){ try(BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))){ int t = Integer.parseInt(reader.readLine()); int[] input = Arrays.stream(reader.readLine().split(" ")).mapToInt(Integer::parseInt)...
구름톤 챌린지 1주차 우연히 구름톤 하는 것을 알게 되었는데 동기부여 받으면서 개발을 할 수 있다니 좋타! 실시간으로 몇명이 풀고 있고, 정답률까지 알려주니 힘이 불끈불끈! 한달 부셔보자! 보상 시크릿 세미나 : 인프랩 CTO 이동욱의 커리어여정과 취업과 성장에 대한 고민 스페셜 굿즈 : 티셔츠와 스티커 블록 갯수 5,10,18에 따라서 다르다 5 개 : 알고리즘 {먼데이} 챌린지 1 해설 강좌 10 개 : 구름톤 챌린지가 끝나고 해설 강좌 제공 18 개 : 오프라인 팀 챌린지 참여 티켓 구름 채용 우대 오프라인 팀 챌린지까지 완주한 사람들에게는 구름 채용 우대 혜택 우수 참여자는 빠른 채용 프로세스를 제안할거다 챌린지까지 일주일에 2번 이상 블로그에 구름 톤 챌린지 학습 일기를 남기고, 컨테이너 학습 ..
MOC: Index: 문제 3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다. 3x 마을 사람들의 숫자는 다음과 같습니다. 10진법 3x 마을에서 쓰는 숫자 10진법 3x 마을에서 쓰는 숫자 1 1 6 8 2 2 7 10 3 4 8 11 4 5 9 14 5 7 10 16 정수 n이 매개변수로 주어질 때, n을 3x 마을에서 사용하는 숫자로 바꿔 return하도록 solution 함수를 완성해주세요. 풀이 class Solution { public int solution(int n) { int answer = 0; for (int i = 0; i < n; i++) { answer++; while (answer % 3 == 0 || String.valueOf(..
MOC: Index: 문제 비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오. add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다. remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다. check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20) toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20) all: S를 {1, 2, …, 20} 으로 바꾼다. empty: S를 공집합으로 바꾼다. 입력 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄..
MOC: Index: 문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다. 출력 각 테스트 케이스마다 점수를 출력한다. 풀이 import java.util.Scanner; public cl..
berom
'개발/CS/알고리즘' 태그의 글 목록 (3 Page)