[python] 백준 20044번 Project Teams
알고리즘/백준2022. 3. 11. 23:59[python] 백준 20044번 Project Teams

문제 풀이 첫째 줄에 팀 수(한 팀당 학생 2명) 둘째 줄에 학생들의 코딩 역량 (한 팀당 학생 2명이기에 팀 수 X2 만큼의 역량 개수가 주어진다.) 예제 1에서 1 7 5 8 이 입력으로 들어왔을 때 팀 당 역량이 최대화되기 위해서는 (1, 8), (7,5)로 묶일 수 있다. 그리고 역량의 합이 최소가 되도록 하면 된다. 내가 생각한 방법은 해당 역량을 순서 없이 받아왔다고 가정하면 sorted()로 오름차순 정렬을 시켜준 후 투 포인터를 이용하여 범위를 좁혀 가며 구하는 방식이다. ex) 역량으로 1 7 3 5 9 2가 들어오면 오름차순 정렬 후 1 2 3 5 7 9 가 된다. 투 포인터를 이용하면 (1, 9), (2, 7), (3, 5) 이렇게 3팀으로 묶이게 된다. 팀들의 역량의 합을 구하면 1..

[python] 백준 17219번 비밀번호 찾기
알고리즘/백준2022. 3. 9. 23:13[python] 백준 17219번 비밀번호 찾기

문제 풀이 간단하게 dictionary로 풀 수 있다. 첫째 줄에 사이트 주소의 수와 비밀번호를 찾으려는 사이트 주소의 수가 공백을 두고 주어진다. 두번째 줄부터 17번째 줄까지는 저장된 주소와 해당 주소에 저장된 비밀번호가 주어진다. 18번째 줄부터 마지막번째 줄까지는 비밀번호를 찾으려는 사이트의 주소가 주어진다. 내가 생각한 방법은 딕셔너리를 이용하는 것이다. key값으로 주소 value값으로 비밀번호를 넣어 dictionary를 만들어주고 키값에 비밀번호를 찾으려는 사이트의 주소가 들어오면 그에 맞는 value값을 반환해주면 된다. 완성된 코드!!👍😊 import sys N, M = map(int, input().split()) address_dict = dict() for _ in range(N)..

[python] 백준 13699번 점화식
알고리즘/백준2022. 3. 2. 23:15[python] 백준 13699번 점화식

문제 풀이 문제를 가만히 보면 규칙이 있다는 걸 알 수 있다. 그림을 보면 반복문이 쓰인다는 것을 알아챌 수 있다. n의 범위가 0 ≤ n ≤ 35 이므로 미리 t(0)부터 t(35)까지의 값들을 구한다. 다 구하는 이유는 예를 들어 t(0)과 t(1)의 값만 있다고 생각하면 t(3)을 구하기 위해서는 t(2)의 값을 알아야 하는데 t(2)의 값이 구해지지 않았기 때문에 일단 미리 순차적으로 t(0)부터 t(35)까지의 값들을 다 구해놓은 후 입력값이 어떤 숫자(n)가 들어왔는지에 따라 해당 t(n)을 반환해주면 된다. 글이 이해가 안된다면 그림을 보면 좀 더 이해하기 쉬울 것이다. 완성된 코드!!👍😊 n = int(input()) # t(0) = 1 t = [1] # n의 범위가 0부터 35까지이나 t..

[python] 백준 1120번 문자열
알고리즘/백준2022. 2. 27. 22:41[python] 백준 1120번 문자열

문제 풀이 문제 조건을 보면 A의 길이는 B의 길이보다 작다. A와 B의 길이가 같을 경우 B의 문자열 중에 A의 문자열 중에 어느 문자가 다른지를 판별해주어 개수를 세주면된다. 아래의 그림을 보면 A에 hello, B에 xello가 들어왔을때 for문을 돌려 각각의 요소들이 같은지 다른지를 판별해 개수를 세서 리턴해주면 된다. A와 B의 길이가 다를 경우 방법은 같은 경우의 방법과 유사하다. 아래의 그림을 보면 A에 abc, B에 topabcoder가 들어왔을때 해당 B의 문자열을 abc로 비교할 수 있는 횟수는 총 8번이다. B의 문자열들을 인덱스 값을 하나씩 증가시켜가며 대조하는 것으로 보면 된다. 총 8번을 비교하여 그 중 최소를 출력해주면 된다. 완성된 코드!!👍😊 def same_len(a, ..

[python] 백준 16499번 동일한 단어 그룹화하기
알고리즘/백준2022. 2. 20. 00:08[python] 백준 16499번 동일한 단어 그룹화하기

문제 풀이 내가 생각한 방법은 이렇다. 단어들을 리스트로 받아 리스트의 원소(문자)들을 정렬하고 정렬된 문자들을 이어 붙여 하나의 단어로 만든 후에 그 문자들이 새로운 리스트에 담는데 만약에 새로운 리스트에 해당 문자가 없을때만 담으면 그룹을 출력할 수 있을 것 같았다. 글이 이해가 안되면 그림을 하나 보자. 예제 입력 1이다. 주어진 단어들이 총 4개인데 리스트로 만들어 정렬한 후 리스트의 원소들을 이어 붙여 하나의 새로운 단어로 만든 것이다. 만들어진 단어들을 새로운 리스트에 순차대로 넣어 만약에 해당 단어가 새로운 리스트에 없을 때에만 추가해주면 된다. 그렇게 하면 해당 그룹은 2개( act와 dgo )로 나뉘어진다. 완성된 코드!!👍😊 n = int(input()) word_list = list(..

[python] 백준 1764번 듣보잡
알고리즘/백준2022. 2. 1. 14:12[python] 백준 1764번 듣보잡

문제 풀이 간단하게 생각하면 듣도 못한 사람들과 보도 못한 사람들의 교집합을 구하면 되는 문제이다. 합쳐서 듣보잡의 수와 해당하는 사람들을 출력하면 되는 것이다. 예제 입력1에서 듣도 보도 못한 사람들의 교집합에는 ohhennrie baesangwook 두 사람이 있기 때문에 출력의 결과가 이렇다. 여기서 생각한 방법은 set함수를 이용하는 것이었다. list도 있겠지만 입력에서 보면 N, M은 500,000 이하의 자연수 즉 입력을 N, M 합쳐 백만 번 정도를 돌린다는 소리인데... 분명 시간초과가 날것이기 때문에 list보다는 set을 이용하게 되었다. 집합을 만들어주고 해당 교집합을 구하여 출력할 때 사전 순으로 출력하라고 했기 때문에 정렬 함수인 sorted를 이용해주면 된다. 완성된 코드!!👌..

[python] 백준 11656번 접미사 배열
알고리즘/백준2022. 1. 28. 23:42[python] 백준 11656번 접미사 배열

문제 풀이 문제에서 나와있다시피 baekjoon의 접미사는 총 8개로 되어있다. 해당 문자열의 길이 = 접미사 개수라고 볼 수 있다. 해당 접미사들을 for문을 돌려 리스트에 넣어주면 모든 접미사들을 구할 수 있다. 사전 순이기 때문에 sort함수를 써서 정렬해주면 된다. 완성된 코드!!👌👌 def func(word): l = list() for i in range(len(word)): l.append(word[i:]) l.sort() return l s = input() for val in func(s): print(val)

[python] 백준 2870번 수학숙제
알고리즘/백준2022. 1. 27. 23:56[python] 백준 2870번 수학숙제

입력 첫 번째 줄 테스트 케이스 수 두 번째 줄부터 문자열 출력 문자열에 대해서 숫자만 뽑아서 비 내림차순으로 출력(비 내림차순에 대해서는 문제 내용에 쓰여있다) 문제풀이 테스트 케이스 수를 입력받고 다음 줄부터는 문자열에서 문자를 제외하고 숫자만 뽑아서 비 내림차순으로 정렬하여 출력해야 하는데 구분한다고 하면 split함수가 생각날 것이다. 하지만 일반적인 split함수로는 문자 하나에 대해서만 구분할 수 있는데 re라이브러리 안에 있는 split함수를 쓰면 구분할 문자가 여러 개여도 구분할 수 있다. re — 정규식 연산 — Python 3.10.2 문서 scanf() 시뮬레이션 파이썬에는 현재 scanf()에 해당하는 것이 없습니다. 정규식은 일반적으로 scanf() 포맷 문자열보다 강력하지만, 더..

[python] 백준 10845번 큐
알고리즘/백준2021. 11. 24. 21:36[python] 백준 10845번 큐

문제 풀이 명령어 6가지 중 push 명령어는 해당 명령어만 실행하고 출력은 없다. 테스트 케이스 입력 부분을 보면 파라미터를 2개, 1개 받는 경우가 있기 때문에 함수를 써서 하나의 인자는 받고 다른 인자는 default로 두어 해당 명령어가 들어오면 명령어 역할에 맞게 실행시켜주면 될 것 같았다. def 함수명(a, b=0): return queue는 리스트 구조를 이용하였고, 명령어를 받기 위해 빠른 입출력의 sys.stdin.readline()을 이용하였다. 그냥 입출력을 쓰면 시간 초과가 나게 된다. 또한 입력 명령어 중에 push 같은 경우 공백을 포함한 두번째 인자 값을 받아서 정수형(int)으로 만들어 줘야 하므로 split함수로 입력받았다. cmd = sys.stdin.readline()..

[java] 백준 10826번 피보나치 수 4
알고리즘/백준2021. 8. 8. 15:21[java] 백준 10826번 피보나치 수 4

기존에 피보나치 수 2(2748번) 문제를 보게 되면 범위가 90인데도 long형의 범위에 들어섰었는데 [java] 백준 2748번 피보나치 수 2 먼저 문제를 보기 전 어제 풀었던 피보나치 수 문제와 같은 문제다. 단지 범위가 커진 것 뿐... [java] 백준 2747번 피보나치 수 문제를 설명하기 앞서 이 아래의 문제와 같은 문제이다. 예제 입력과 begin-dev-awos.tistory.com 이 문제는 무려 입력이 10000이다. 하지만 쫄 필요는 없다. java에서 지원하는 그 이상의 숫자를 나타내줄 수 있는 BigInteger 클래스가 존재하기 때문에 활용을 하면 된다. 풀이는 2748번과 같으므로 생략하겠다. import java.math.BigInteger; import java.util..

image