본문 바로가기

728x90
반응형

백준 write-up/정렬 & 그리디

(84)
[백준] 애너그램 : 6996번 - Python https://www.acmicpc.net/problem/6996 6996번: 애너그램 첫째 줄에 테스트 케이스의 개수( 만약 두 단어가 주어졌을 때, 두 문자열이 아나그램이라면 sorted 함수의 인자로 줬을 때 두 개의 값이 같게 나온다. "정렬했을 때의 값이 같다!!!" (2) [Python] sorted()와 sort()의 차이점 -> sort 함수는 리스트명.sort() 형식으로 "리스트형의 메소드"이며 리스트 원본 값을 직접 수정 -> sorted 함수는 sorted(리스트명) 형식으로 "내장 함수"이며 리스트 원본 값은 그대로이고 정렬 값을 반환 # sort 함수 arr1 = [5, 2, 8] arr2 = arr1.sort()# 원본을 정렬하고 수정 print('arr1: ', arr1) p..
[백준] 도비의 난독증 테스트 : 2204번 - Python https://www.acmicpc.net/problem/2204 2204번: 도비의 난독증 테스트 꿍은 도비에게 영어단어들을 제시한 후 어떤 단어가 대소문자를 구분하지 않고 사전순으로 가장 앞서는지 맞추면 양말을 주어 자유를 얻게해준다고 하였다. 하지만 인성이 좋지 않은 꿍은 사실 www.acmicpc.net 문제를 풀면서 몰랐던 개념 [Python] 대소문자 구분 없이 정렬 -> 영문 문자열 리스트를 정렬할 때에는 기본적으로 대소문자를 구분하여 소팅하는데 sort함수에 key=str.lower라는 파라미터를 넣으면, 대소문자 구분없이 자연스럽게 정렬할 수 있음! arr = ['bbb', 'AAA', 'DDD', 'CCC', 'aaa'] # 대소문자 구분하여 정렬 arr.sort() print(arr)..
[백준] 종이자르기 : 2628번 - Python https://www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net 문제의 접근 방법 가로 점선을 잘랐을 때는 그 값을 세로길이에 저장하고, 세로 점선을 잘랐을 때는 그 값을 가로길이에 저장해야 한다. (ex) 3번 가로점선을 따라 자를 경우 그 잘린 값이 세로의 길이가 된다. 내가 막혔던 부분 - 문제의 접근 방법 문제 풀이 방법 (1) 가로와 세로 길이 w,h 입력받기 (2) 자를 횟수 n번 입력받기 (3) 나중에 길이를 직사각형의 길이를 계산하기 위해 width, he..
[백준] 세수정렬 : 2752번 - Python https://www.acmicpc.net/problem/2752 2752번: 세수정렬 숫자 세 개가 주어진다. 이 숫자는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 숫자는 모두 다르다. www.acmicpc.net 문제의 접근 방법 - 입력 받을 숫자 n개 입력받기 - 입력 받은 숫자들을 정렬하기 - 출력 형식에 맞춰서 정렬된 원소들 출력하기 내가 막혔던 부분 코드를 간결하게 구현하지 못함. 문제 풀이 방법 (1) 세 숫자를 일일히 입력받기, 일일히 형변환, 하나하나 append 함수를 사용해서 리스트에 추가 -> map 함수를 사용해서 한번에 입력받기, 정수로 형변환, 리스트에 넣기를 한번에 할 수 있음. (2) 반복문을 돌려서 출력하기 -> 그냥 인덱스를 찍어서 print 해주어도..
[백준] 최후의 승자는 누구? : 12760번 - Python https://www.acmicpc.net/problem/12760 12760번: 최후의 승자는 누구? 입력의 첫 줄에 플레이어의 수 \(N\)과 가진 카드 수 \(M\)이 입력 된다. \(( 2 \le N \le100, 1 \le M \le 100 )\) 그 다음 \(N\)줄에 걸쳐 각 플레이어가 들고 있는 카드에 적힌 숫자들이 입력된다. \(( 1 \le\) 카 www.acmicpc.net 문제를 풀면서 몰랐던 개념 (1) [Python] 비어있는 배열, 리스트 확인하기 -> 리스트가 비어있는지 아닌지 여부를 확인하기 위해서는 'not'을 사용해서 알 수 있음! # case 1 # arr = [] if not arr: print("arr is empty") else: print("arr is not ..
[백준] 잃어버린 괄호 : 1541번 - Python https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 문제를 풀면서 몰랐던 개념 - for 문 range 자리에 리스트 원소를 split 메소드로 나눈 값들만큼의 반복을 설정할 수 있다. 문제의 접근 방법 - '-' 부호가 나오기 전까지 모두 괄호 안으로 묶어서 더해버리기 - 수식이 주어지면 '+'를 기준으로 먼저 더해주고 남겨진 값들을 빼주면 항상 최솟값을 만들 수 있다. 내가 막혔던 부분 처음 아이디어를 떠올리는 과정에서 막혔다. -> 마이..
[백준] 거스름돈 : 5585번 - Python https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net https://ye5ni.tistory.com/66 ===> 참고 문제의 접근 방법 - 거스름돈 개수가 가장 적게 잔돈을 주려면 잡화점에서 가지고 있는 잔돈을 가장 큰 단위부터 거슬러주어야 함. - 타로는 1000엔 지폐를 한 장 냈기 때문에 1000엔에서 타로가 지불해야 할 돈을 빼준 값이 받아야할 잔돈의 값을 의미함. 문제 풀이 방법 타로가 지불해야 할 돈 N엔 입력받기 ..
[백준] 사탕 : 11256번 - Python https://www.acmicpc.net/problem/11256 11256번: 사탕 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰 www.acmicpc.net 문제의 접근 방법 포장할 수 있는 사탕의 개수 = 상자의 크기(가로길이 * 세로길이) "상자의 크기를 내림차순으로 정렬" 문제 풀이 방법 테스트 케이스 T개 입력 받기 -> T번만큼 반복문을 돌려 사탕의 개수(J), 상자의 개수(N) 입력 받기 -> N번만큼의 반복문을 돌려 상자의 가로(c)와 세로(r)길이를 입력받아 이 두 값을 곱한 값을 빈 리스트 arr에 저장하기 -> 리스트 arr를 내림차순으로..

728x90
반응형