반응형

전체 글 369

[백준 알고리즘] 6550번: 부분 문자열 (Python)

https://www.acmicpc.net/problem/6550 6550번: 부분 문자열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다. www.acmicpc.net 소스코드 풀이 ★ 부분 문자열이 되기 위해서는 단순히 s의 알파벳이 t안에 들어있어야 한다만 성립하는 것이 아니라, 그 순서까지 일치해야 합니다 ! ex) person compression => s 안의 문자들이 t도 들어있지만, 순서가 일치하지 않기 때문에 합쳤을 때 부분 문자열이 될 수 없음 !

Algorithm/백준 2023.06.23

[Python] list에서 remove 사용할 때 !!

_list = [1,2,3,4,5] _list라는 리스트가 있을 때 remove라는 함수를 활용하여 리스트 안에 있는 원소들을 제거하고자 하였습니다. for x in _list: _list.remove(x) print(_list) 위와 같이 코드를 작성했을 때 결과 값은 [2,3,4,5] [2,4,5] [2,4] 가 나오게 됩니다. 예상으로는 아래와 같이 결과값이 출력되어야 했는데, 그 이유는 remove를 수행하면서 원본 리스트에 손상이 가기 때문이었습니다 ! [2,3,4,5] [3,4,5] [4,5] [5] [] _list의 원소들이 하나씩 제거되면서, _list 자체도 바뀌게 되고, 바뀐 리스트에서 remove를 또 수행하기에 원하는 결과가 출력되지 않는 것입니다. 그렇기에 원하는 결과값을 얻기 위..

Python 2023.06.21

[백준 알고리즘] 15904번: UCPC는 무엇의 약자일까? (Python)

https://www.acmicpc.net/problem/15904 15904번: UCPC는 무엇의 약자일까? 첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 www.acmicpc.net 소스코드 풀이 ★ 입력받은 문자열을 UCPC로 만들기 위해서 축약을 진행해야 하는데, 축약을 했을 때 UCCPCC or UCPPPC와 같이 해당 문자열이 반복될 수도 있습니다. 그렇기에 그러한 부분들을 고려하여 풀이를 진행해야 합니다 ! ★ 입력받은 문자열을 읽으면서 해당 글자가 ucpc라는 리스트 안에 들어있는 글자들과 같은지 비교해줍니다. 이 때, ucpc 리스트의 첫번..

Algorithm/백준 2023.06.20

[백준 알고리즘] 18310번: 안테나 (Python)

https://www.acmicpc.net/problem/18310 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net 소스코드 풀이 ★ 집들간의 거리를 알기 위해 주어진 집의 위치를 정렬했습니다. 일직선상에서 중앙에 가까운 값일수록 다른 점들의 거리가 가까워지는 것을 활용하여 문제를 풀었는데, n이 홀수일 때와 짝수일 때를 나눠서 결과값을 출력했는데, 홀수인 경우 인덱스가 0부터 시작하기에 n // 2의 인덱스를 가지고 있는 값을 출력하였고, 짝수인 경우엔 n-1 // 2의 값을 출력하였습니다 !

Algorithm/백준 2023.06.20

[백준 알고리즘] 1969번: DNA (Python)

https://www.acmicpc.net/problem/1969 1969번: DNA DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오 www.acmicpc.net 소스코드 풀이 ★ 예시를 기준으로 봤을 때 Hamming Distance의 합이 가장 작은 DNA는 주어진 DNA들의 인덱스 값의 갯수가 가장 많은 알파벳의 조합인 것을 알 수 있습니다. ex) TATGATAC TAAGCTAC AAAGATCC TGAGATAC TAAGATGT 0번째 자리 = > T, 1번째 => A, 2번째 = > A, 3번째 => G,..

Algorithm/백준 2023.06.19

[백준 알고리즘] 1343번: 폴리오미노 (Python)

https://www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 소스코드 풀이 ★ 파이썬의 replace함수는 특정 문자열을 원하는 문자열로 대체할 수 있습니다. 이 문제에서는 'XXXX"를 'AAAA'로, 'XX"를 'BB"로 대체하여 문자열을 갱신하였습니다 ! ★ 이때, 갱신한 문자열 a에 'X'가 들어있다면 덮을 수 없는 보드판이기 때문에 -1을 출력하고, 아닐 시 보드판을 그대로 출력해줍니다.

Algorithm/백준 2023.06.19

[백준 알고리즘] 2847번: 게임을 만든 동준이 (python)

https://www.acmicpc.net/problem/2847 2847번: 게임을 만든 동준이 학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어 www.acmicpc.net 소스코드 풀이 ★ 레벨이 낮은 순서대로 그 뒷 레벨의 점수와 비교하여 점수를 감소시키는 것이 아닌, 가장 뒤에서부터 점수를 감소시켜 나가는 방식으로 풀이를 진행해야 합니다 ! ★ 해당 레벨의 점수가 앞 레벨의 점수보다 작거나 같다면, 앞 레벨의 점수를 줄여줘야 하기 때문에 (앞 레벨 점수) - (해당 레벨 점수) + 1을 통해 감소 횟수를 체크해줍니다. ★ 그 후에는 앞 레벨의 점수를 해당 레벨..

Algorithm/백준 2023.06.19

[백준 알고리즘] 13458번: 시험 감독 (Python)

https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 소스코드 풀이 ★ 시험장의 응시생을 총감독이 감시할 수 있는 수인 b로 커버가 된다면 ans는 1만 증가하게 됩니다. ★ 총감독으로 커버가 되지 않는 경우 부감독을 최소한으로 사용해야 하는데, 반복문을 돌리면 입력값이 백만까지 이기에 시간초과가 뜨게 됩니다. ★ 총감독으로 감시할 수 있는 수를 제외한 학생 k를 c로 나눈 나머지가 0이라면 ..

Algorithm/백준 2023.06.14
반응형