[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] 백준 10867번 중복 빼고 정렬하기
알고리즘/백준2022. 3. 8. 23:57[python] 백준 10867번 중복 빼고 정렬하기

문제 풀이 문제 출력 조건에서 같은 수는 한 번만 출력한다고 되어있기 때문에 set()으로 중복된 수들을 걸러주면 되겠다 싶었다. 또한 오름차순으로 정렬한 결과를 출력해야 되기 때문에 sorted()로 오름차순 정렬을 해주었다. 값만 출력해야 되기 때문에 빈 문자열을 하나 만들고 정렬된 리스트의 값들을 하나씩 넣어주는데 마땅한 방법이 생각나지 않아 f-string방식으로 값뒤에 공백을 하나 만들어 빈 문자열에 이어 붙이도록 했다. 마지막으로 strip()으로 불필요한 공백이 있으면 지워주도록 했다. 완성된 코드!!👍😊 num_count = int(input()) rs = '' for val in sorted(set(map(int, input().split()))): rs += f'{str(val)} ' ..

[python] 백준 11399번 ATM
알고리즘/백준2022. 3. 3. 23:55[python] 백준 11399번 ATM

문제 풀이 n명의 사람들이 돈을 인출하는 데 걸리는 시간이 주어지고 n-1번 사람이 돈을 뽑을 때까지 n번 사람은 기다려야 해서 기다리는 시간(n-1번 사람이 돈을 뽑는 시간)까지 계산해줘야 한다. 예제 1을 아래의 그림과 같이 보면 첫째 줄에 5 (사람 인원수)가 주어지고 둘째 줄에 3 1 4 3 2 (각 사람마다 인출하는데 필요한 시간)이 주어진다. times라는 배열에 3 1 4 3 2를 담고 rs(배열)에 이전 사람이 돈을 뽑을 때까지 기다리는 시간과 본인이 인출하는데 시간을 누적하여 각 rs(배열)에 담아주면 된다. 예제에서는 5명이 있기 때문에 rs(배열)에도 5개의 값이 있을 것이다. 설명을 하기 위해서 rs(배열)을 썼지만 그냥 tot과 같은 변수 하나에 값을 누적시켜주면 된다. 하지만 여..

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

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

[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() 포맷 문자열보다 강력하지만, 더..

[java] 백준 1427번 소트인사이드
알고리즘/백준2021. 8. 1. 15:30[java] 백준 1427번 소트인사이드

이 문제를 보기 전 아래의 문제를 보면 오름차순으로 정렬하였을 때는 Arrays.sort()를 써주었으면 되었는데 이번 문제는 내림차순이다. [java] 백준 2750번 수 정렬하기 문제의 핵심은 오름차순으로 정렬하는 것이다. 이 문장을 보자마자 Arrays.sort()라는 메소드를 이용하면 쉽게 풀 수 있을 것 같아 바로 적용하였다. 기본적으로 오름차순 정렬이기 때문에 간단하 begin-dev-awos.tistory.com 물론 Collections.sort를 이용하여 내림차순 정렬을 할 수 있긴 하겠지만... 보아하니 방법이 어려워 보여서 간단한 방법으로 풀어보았다. import java.util.Scanner; public class Main { public static void main(Strin..

[java] 백준 2750번 수 정렬하기
알고리즘/백준2021. 7. 30. 23:30[java] 백준 2750번 수 정렬하기

문제의 핵심은 오름차순으로 정렬하는 것이다. 이 문장을 보자마자 Arrays.sort()라는 메소드를 이용하면 쉽게 풀 수 있을 것 같아 바로 적용하였다. 기본적으로 오름차순 정렬이기 때문에 간단하게 한줄 써주면 된다. import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] arr = new int[N]; for(int i=0; i

image