알고리즘(백준)/구현

알고리즘(백준)/구현

[알고리즘/구현] 1759번 : 암호 만들기 - python

링크 : https://www.acmicpc.net/problem/1759  문제소요시간: 10분 53초설계하기(접근방법) 1. 입력받기가능한 문자 리스트를 입력받는다 2. 구현하기문제의 조건은 모음 1개이상과 자음 2개 이상을 사용한 단어를 만들어야한다는 것이다 모음과 자음으로 나누고 그 중에서 가능한 경우의 수를 뽑아 정렬할까 고민했지만, 그냥 가능한 모든 경우의 수를 만든 후에,모음cnt와 자음cnt로 각 단어의 자음모음 개수를 세서조건에 부합하는 경우에만 가능한 문자 조합을 먼저 추출했다 그 후에, 각 조합을 알파벳순으로 정렬한후,가능한 문자 조합 전체 리스트를 정렬해서 출력한다. 3. 출력하기가능한 문자를 ''.join을 통해 출력한다 코드(출력)from itertools import permu..

알고리즘(백준)/구현

[알고리즘/구현] 1148번 : 단어 만들기 - python

링크 : https://www.acmicpc.net/problem/1148  문제소요시간: 75분 30초설계하기(접근방법) 1. 입력받기20만개 정도가 입력되니 sys를 통해서 입력받자문자열이니 rstrip을 통해 개행문자를 제거해준다 2. 구현하기아이디에이션에 상당히 애를 먹었다. 먼저 20만개의 단어를 검증하려니 딕셔너리가 생각이 났다.먼저 딕셔너리에 모든 단어를 넣어준다 그 다음 주어진 퍼즐의 문자의 조합과 순열로20만개의 딕셔너리를 검증할 수 있는지 계산해보았다. 서로다른 알파벳 9개의 경우 9!이니 시간초과가 나지 않는다.8개의 경우 9개 중에 8개를 뽑은 후, 8개의 순열을 계산하니 또한 9!으로 시간초과가 나지 않는다. 이처럼조합 및 순열 알파벳 4개부터 9개까지 itertools의 comb..

알고리즘(백준)/구현

[알고리즘/구현] 16918번 : 봄버맨 - python

링크 : https://www.acmicpc.net/problem/16918문제소요시간: 1시간 26초설계하기(접근방법) 1. 입력받기격자판을 입력받으면서 숫자(초)로 바꿔준다 2. 구현하기while문을 통해 시간동안 시뮬레이션을 실행한다.+ 아래의 코드로 수정했다. 3. 출력하기숫자를 다시 문자로 바꾸어주어 출력한다. 코드(출력)x, y , time = map(int,input().split())vec = []field = [[0 for i in range(y)] for _ in range(x)]for _ in range(x): vec.append(input())# 폭탄 시간으로 변환 for i in range(x): for j in range(y): if vec[i][j] ==..

알고리즘(백준)/구현

[알고리즘/구현] 25206번 : 너의 평점은 - python

링크 : https://www.acmicpc.net/problem/25206  문제소요시간: 13분 05초설계하기(접근방법) 1. 입력받기문자, 실수, 문자로 섞여있으니 일단 입력받은 후 자료형에 따라 변환해준다. 2. 구현하기학점에 따른 점수는 딕셔너리를 선언하여 계산하기 편하게 구현해준다.총 점수 = 학점 * 과목평점 을 구한 후 총 점수를 학점으로 나누어준다 3. 출력하기문제의 조건에 맞게 반올림 없이 출력해준다 코드(출력)total_grade = 0total_lec = 0dic = {'A+' : 4.5, 'A0' : 4.0, 'B+' : 3.5, 'B0' : 3.0, 'C+' : 2.5, 'C0' : 2.0, 'D+' : 1.5, 'D0' : 1.0 , 'F' : 0}for i in range(2..

알고리즘(백준)/구현

[알고리즘/구현] 3085번 : 사탕 게임 - python

링크 : https://www.acmicpc.net/problem/3085   문제소요시간: 50분설계하기(접근방법) 1. 입력받기문자열을 입력받아 리스트로 바꿔준다 2. 구현하기옆에 있는 문자와 같으면 pass옆에 있는 문자와 다르면 서로 위치를 바꾼temp_array를 함수에 넣어준다 함수는 연속된 문자가 가장 많은 값을 반환해준다함수 내부에서 문자가 연속되면 +1불연속이면 1로 초기화시켜준면서 max값과 비교를 한다 가로와 세로를 수행하고 max를 리턴해준다 리턴받은 값들을 max와 비교하면서최대로 긴 문자열을 출력한다 3. 출력하기  코드(출력)n = int(input())arr = []color = ['C','P','Z','Y']for _ in range(n): arr.append(list..

알고리즘(백준)/구현

[알고리즘/구현] 18111번 : 마인크래프트 - python

링크 : https://www.acmicpc.net/problem/18111  문제소요시간: 45분설계하기(접근방법) 1. 입력받기 땅을 입력받는다 땅의 모양은 상관 없기 때문에 편의를 위해 한 배열에 담아도 된다 2. 구현하기문제의 핵심은 브루트 포스로 풀어야 하지만,모든 경우의 수를 테스트할 필요가 없다는 것이다. 가장 낮은 땅의 높이보다 낮은 높이는검사할 필요가 없다. 그렇다면 가장 높은 높이는 어떻게 정하는가? 가능한 가장 높은 높이는(전체 블록의 수 + 주어진 인벤토리의 블록 수) // 전체 땅 넓이이다 이보다 더 블록을 가져올 수는 없다. 가장 낮은 높이와 높은 높이가 정해졌다. 시간은 어떻게 구할까?입력받기에서 말했던 내용에 이어서목표한 땅의 높이를 h라고 할 때,우리는 땅과 h와의 차이만 ..

알고리즘(백준)/구현

[알고리즘/구현] 2108번 : 통계학 - python

링크 : https://www.acmicpc.net/problem/2108  문제소요시간: 33분 22초설계하기(접근방법) 1. 입력받기입력의 수가 많으니 sys를 import 한다 2. 구현하기입력이 50만개이니 충분히 sort가 가능하다따라서 중앙값, 최대와 최소는 sort를 통해 구현해준다 최빈값의 경우, 모든 입력마다 체크하면상당히 비효율적이다 따라서 딕셔너리를 활용해서각 숫자의 입력 횟수를 저장한다. 1. 입력이 1개라면 그 숫자를 출력2. 입력이 여러 개라면,딕셔너리에서 key,value를 temp라는 배열에 추출한다. lambda 함수를 활용하여처 최빈값과 숫자의 크기를 기준으로 sort()한다.0번째 원소의 횟수보가 1번째의 횟수보다 크면 0번째 출력둘이 횟수가 같다면 1번째를 최빈값으로 ..

알고리즘(백준)/구현

[알고리즘/구현] 10773번 : 제로 - python

링크 : https://www.acmicpc.net/problem/10773  문제소요시간 : 3분 10설계하기(접근방법) 1. 입력받기입력의 양이 많으니 sys를 import하여 입력을 구현한다 2. 구현하기배열을 선언하고0이 아닌 숫자가 들어오면 append 0이 들어오면 pop을 해준다 3. 출력하기합을 출력한다 코드(출력)import sysinput = sys.stdin.readlinek = int(input())arr = []for i in range(k): n = int(input()) if n == 0 : arr.pop() else: arr.append(n)print(sum(arr)) 얻어갈 부분

되다
'알고리즘(백준)/구현' 카테고리의 글 목록