분류 전체보기 403

BaekJoon Online Judge 10825번 파이썬

문제 링크 https://www.acmicpc.net/problem/10825 이번 문제는 다른 문제들과 다르게 내림차순 정렬도 섞여있다. 오름차순 정렬은 x[i] 였다면 내림차순 정렬은 -x[i] 로 하면 된다. 정답 코드 import sys N = int(sys.stdin.readline()) students_subjects_scores = [[]*4 for i in range(0,N)] for i in range(0,N): students_subjects_scores[i] = list(sys.stdin.readline().split()) students_subjects_scores.sort(key=lambda x:(-int(x[1]),int(x[2]),-int(x[3]),x[0])) for i in..

BaekJoon Online Judge 10814번 파이썬

문제 링크 https://www.acmicpc.net/problem/10814 나이 순으로 정렬한 후에 나이가 같으면 등록한 순으로 정렬하는 문제다. 등록한 순으로 어떻게 정렬해야할지 고민이었는데 나이 순으로 정렬하기만하면 되는 문제였다. 그러고 나서도 계속 ‘틀렸습니다’가 떠서 뭔가 싶었다. 정렬하는 부분에서 member_info.sort(key = lambda x: x[0]) 에서 x: int(x[0])로만 바꿔주면 되는 문제였다. 정답 코드 import sys N = int(sys.stdin.readline()) member_info = [[]*2 for i in range(0,N)] for i in range(0,N): member_info[i] = list(sys.stdin.readline()...

TIL 5장 형식 맞추기

오늘 TIL 3줄 요약 규칙을 일관적으로 적용해야한다. 비슷한 의미를 갖거나 내용이 이어지면 가까이 배치해야하고 간단하게 시작해서 자세한 내용으로 끝나야한다. 띄어쓰기, 들여쓰기, 함수 선언 위치, 변수 선언 위치 등을 고려해야 가독성이 좋은 코드를 작성할 수 있다. TIL (Today I Learned) 2022.05.02 오늘 읽은 범위 5장. 형식 맞추기 책에서 기억하고 싶은 내용을 써보세요. 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. (p.96) 500줄을 넘지 않고 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다는 사실이다. (p.97) 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다. 아래로 내려갈수록 의도를 세세하게 묘사한다. 마지막..

BaekJoon Online Judge 11651번 파이썬

문제 링크 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 이번에는 y값이 같은 경우에만 x값을 이용하여 정렬하는 문제이다. 그래서 그냥 sort만 사용하지 않고 sort(key= lambda x:(x[1],x[0]))을 이용하여 배열의 두번째 인덱스, 즉 y좌표가 우선임을 알려주었다. 나머지는 11650번과 동일하다. 정답 코드 import sys N = int(sys.stdin.rea..

BaekJoon Online Judge 11650번 파이썬

문제 링크 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 2차원 배열의 형태로 좌표들을 입력받았다. sort()함수에서 자동으로 x좌표가 같으면 y좌표로 정렬해주었다. 그대로 출력하면 대괄호와 컴마가 같이 출력이 된다. 그래서 2차원배열의 인덱싱을 이용하여 출력하였다. 정답 코드 import sys N = int(sys.stdin.readline()) coord = [[0] * 2 for ..

BaekJoon Online Judge 2751번 파이썬

문제 링크 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 처음에 잘못 짠 코드 import sys N = int(sys.stdin.readline()) numbers = [0] * N for i in range(0,N): numbers[i] = int(sys.stdin.readline()) for i in range(0,N): for j in range(i,N): if numbers[i] >= numbers[j]: dummy = n..

BaekJoon Online Judge 11052번 파이썬

문제 링크 https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 민규가 원하는 카드의 개수를 card_need 변수로 받았다. 카드팩의 가격을 pack으로 받았다. 그리고 카드팩의 카드 개수와 인덱스를 맞추기 위해 0의 자리에 0을 넣어두고 input을 받았다. 처음에 잘못 짠 코드 card_need = int(input()) pack = [0] + list(map(int,input().split())) for i in range(1,card_need+1)..

TIL 4장 주석

오늘 TIL 3줄 요약 주석을 다는 것보다는 코드만 보아도 알 수 있도록 코드를 짜야한다. 이름을 잘 지으면 주석을 달지 않아도 될 수 있다. 주석을 잘못 달면 오히려 독이 될 수 있다. TIL (Today I Learned) 2022.04.28 오늘 읽은 범위 4장. 주석 책에서 기억하고 싶은 내용을 써보세요. 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 자신이 저지른 난장판을 주석으로 설명하려 애쓰는 대신에 그 난장판을 깨끗이 치우는 데 시간을 보내라! (p.69) 몇 초만 더 생각하면 코드로 대다수 의도를 표현할 수 있다. 많은 경우 주석으로 달려는 설명을 함수로 만들어 표현해도 충분하다. (p.70) 좋은 주석 1. 법적인 주석 ..

TIL 3장 함수

오늘 TIL 3줄 요약 한가지 작업만 하는 함수를 작성해야한다. 추상화 수준을 고려하여 코드를 작성해야한다. 함수의 이름을 붙이는데에 일관성이 있어야 읽기 쉬운 코드를 작성할 수 있다. TIL (Today I Learned) 2022.04.27 오늘 읽은 범위 3장. 함수 책에서 기억하고 싶은 내용을 써보세요. if문/ else문/ while문 등에 들어가는 블록은 한 줄이어야 한다는 의미다. 대개 거기서 함수를 호출한다. 그러면 바깥을 감싸는 함수가 작아질 뿐 아니라, 블록 안에서 호출하는 함수 이름을 적절히 짓는다면, 코드를 이해하기도 쉬워진다. (p.43~p.44) 한가지 작업만 하는 함수는 자연스럽게 섹션으로 나누기도 어렵다. (p.45) 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. 한 함수 다..

BaekJoon Online Judge 2225번

문제 링크 https://www.acmicpc.net/problem/2225 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net k = 1 이면, 경우는 자기 자신밖에 없으므로 경우의 수는 모두 1이다. 1,2 -> 01 10 2가지 2,2 -> 02 11 20 3가지 3,2 -> 03 12 21 30 4가지 4,2 -> 04 13 22 31 40 5가지 5,2 -> 05 14 23 32 41 50 6가지 이처럼 k = 2 이면, 경우의 수는 n + 1 이 된다. 1,3 -> 001 010 100 3가지 2,3 -> 002 020 200 011 101 110 6가지 3,3 -> 003 030 300 111 120 102 210 201 02..

728x90