[프로그래밍]/[프로그래밍언어]PYTHON

[Python Algorism] Week1 교재19p~53p

bestFinanceDataAnalyist 2024. 1. 13. 22:48

DO IT 알고리즘 코딩테스트_파이썬책을 공부하는 취준생으로써 해당 책의 공부 내용을 정리하며 복습하는 시간을 가지고정리한 내용이 다른 입문자들도 쉽게 이해 하도록 공유하고자 만든 페이지입니다. 모든 문제의 저작권은 관련 저작자에게 있으며 문제가 됐을 시 삭제하겠습니다. 감사합니다

 

1월 1일부터 교재에 나온 순서대로 평일만 5문제씩 푸는 것을 목표로 하고 있습니다. 밑에 보이는 코드들은 백준내에서 정답으로 인정된 코드입니다. 참고해서 모두 학습에 도움되길 바랍니당!


WEEK1

문제1) 백준 2750번 _ 수 정렬하기

https://www.acmicpc.net/problem/2750

 

2750번: 수 정렬하기

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

 

문제해결

파이썬 입력은 ? input() > int(input() > map(int, input()) list(map(int, input())) 이런식으로 확장해나가기

정렬함수는 ? 리스트이름.sorted()

 

실행코드

 

 

문제2) 백준11270_ 숫자의 합 구하기

https://www.acmicpc.net/problem/11270

 

11270번: Disastrous Downtime

You’re investigating what happened when one of your computer systems recently broke down. So far you’ve concluded that the system was overloaded; it looks like it couldn’t handle the hailstorm of incoming requests. Since the incident, you have had am

www.acmicpc.net

 

문제해결

앞에와 동일하게 개수 이력받기. split는 공백이 있을때만 사용

리스트 값 더하는 것은 for 반복문 사용

for i in range(처음, 끝값) 이런식으로 설정안해도 되고 for i in 리스트 하면 리스트 각각 요소 더해짐!!

 

 

실행코드

 

 

문제3) 백준 1546_ 평균 구하기

https://www.acmicpc.net/problem/1546

 

1546번: 평균

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보

www.acmicpc.net

문제해결

개수와 점수 입력받기 > 최대값 구하기(max함수 사용) > 문제에서 정의한 평균값으로 새로운 리스트 생성 > 합(sum 사용)

 

실행코드

 

 

 

문제4) 백준 11659_ 구간합 구하기

https://www.acmicpc.net/problem/11659

 

11659번: 구간 합 구하기 4

첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j

www.acmicpc.net

문제해결

한줄씩 일으려면 ? import sys > sys.stdin.readline 쓰면 한줄씩 읽어짐

리스트 불러와서 구간합 배열 만들기

구간합을 구할 대상 배열 시작 인덱스. 끝 인덱스 지정

구간합[끝 인덱스] - 구간합[시작인덱스-1] 로 지정 

 

실행코드

* 리스트를 새로운 거를 생성할 때는 범위 / 미리 값을 넣어놓지 않으면 indexerror가 발생하는 것을 알게됨.

 

 

 

문제5) 백준 11660_ 구간합구하기2

https://www.acmicpc.net/problem/11660

 

11660번: 구간 합 구하기 5

첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네

www.acmicpc.net

문제해결

앞에거와 다르기 2차원 리스트여서 한번에 푸는 것 실패. 교재 48p 내용이 제일 이해하기 쉬움

구간합을 구하려고 하면 제일 큰 직사각형에서 구간합이 포함되지 않은 여, 행을 빼고 중복하여 뺀 곳을 더하면 된다.

요 원리만 이해하면 쉽습니다.

 

똑같이 import sys로 패키지를 불러온 후, 리스트 크기와 질의수를 받고 리스트와 합 배열을 만들어줍니다.

이때, 리스트 합 배열 크기를 지정해야 합니다. 아니면 idnexerror뜸

앞에서 구한 것처럼 똑같이 합 배열을 구해준 후 구간 합 배열을 이어 구해주면 끝!

 

실행코드

 

 

이상 1월 1주차 코딩 테스트 문제풀이였습니다. 감사합니다!

전체 코드는 다운 받아 사용하시길 바랍니다

 

week1.py
0.00MB