728x90
728x90

list 18

[Python]백준 BaekJoon.AC 1764 : 듣보잡(set, sorted())

https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net set을 제대로 몰라 한참 헤맸다. 지금까진 중복 제거하는 목적으로만 사용해서... set이 집합의 의미를 가지고 있는지 모르고 있었다. 고로 set은 합집합, 교집합, 차집합을 능숙히 해낼 수 있는 아이였던 것이다..! 이런 기능도 모르고 리스트나 딕셔너리로 삽을 펐으니.. a = set([1, 2, 3]) b = set([3, 4, 5]) print(a|b) 출력:{1, 2, 3, 4, 5}..

[Python]BaekJoon.AC 2022.02.01

[Python]백준 BaekJoon.AC 10816 : 숫자 카드2(Counter, 이진탐색X)

https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 다양한 방법을 시도했던 문제다... 이건 틀리고 이건 시간초과고, 떠오르는 방법을 다 적용해봤는데 이렇다 할 해결방법이 없었다. 분명 하라는대로, 이진탐색으로 풀었는데... 리스트로도 해보고 딕셔너리도 사용해보고. 처음엔 딕셔너리도 이진탐색엔 어울리지 않는 것 같아 리스트로만 해보다, 다들 딕셔너리를 당연하듯 쓰길래. 그리고 이진탐색 아닌 방법으로도 해봐도 안되길..

[Python]BaekJoon.AC 2022.01.22

[Python]백준 BaekJoon.AC 2108 : 통계학(Counter, sum)

https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 우선 N이 1일 때는 모든 계산에서 예외처리 해줬다. 코드대로 한다면 엉뚱한 답이 나오기에. 전체코드에서 for문부터 나름 1~4번째 출력값별로 단락을 나눠 구별해줬는데... 알아보기 편하려나. -먼저 sum을 이용해 리스트 값을 더해 산술평균을 구했다. round 처리해 반올림도 잊지 않았다. -리스트를 오름차순으로 정렬한 후, N//2번째 리스트 값으로 중앙값을 구해주고. -대망의 최빈값인데. 힘겹게 코드를..

[Python]BaekJoon.AC 2022.01.20

[Python]백준 BaekJoon.AC 1978 : 소수 찾기(에라토스테네스의 체)

https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 보통의 방법으로 풀 수 없음은 짐작했지만 에라토스테네스의 체를 이용해 풀어야 함은 떠올리지 못했다. 알고리즘 분류를 보고 직접적인 힌트를 얻었고, 조금의 복습이 필요했다. 알고자하는 수보다 작거나 같은 수를 대상으로 진행하면 된다. 1보다 큰 자연수의 배수를 지우는 방식이다. 이때, 만약 n의 배수라면 n을 제외한 모든 배수를 지우는 것이다. 설명이나 코드로 이해하기 난해할 수 있다. 그림으로 이해하는 편이 훨씬 쉽다. 내 방식이 더 복잡한지 아닌지는 모르겠으나....

[Python]BaekJoon.AC 2022.01.20

[Python]백준 BaekJoon.AC 1920 : 수 찾기(이분탐색)

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 가볍게 함정에 빠져 이분탐색 문제임을 확인해주고..! 오랜만에 하려니 여러 시행착오를 겪으며 드문드문 천천히 작성해갔다. 세세한 디테일을 단번에 구현하기란 어렵다. 이분탐색 구조를 외우면 쉬운데 안외우고 원리를 기억해 가끔 작성하려니 힘들다ㅎㅎ 프로그램 저장위치 바꿔줬더니 오류 떠서 해결하는 데도 애먹었다.. 아이클라우드 위치를 탐색하지 못하다니....

[Python]BaekJoon.AC 2022.01.19

[Python]백준 BaekJoon.AC 11651 : 좌표 정렬하기2(sys, sort())

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 좌표 정렬하기1의 변형편이다. 그렇지만 x, y였던 우선순위가 y, x로 바뀌기만 해서 간단히 수정해주면 된다. sort() 문장에서 우선순위만 바꿔주면 된다. import sys N = int(input()) num = [] for i in range(N): num.append(list(map(int, sys.stdin.readline()..

[Python]BaekJoon.AC 2022.01.16

[Python]백준 BaekJoon.AC 11650 : 좌표 정렬하기(sys, sort())

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 놀러와서도 코딩하겠다고 노트북 붙잡고 있는 내가 최고...^^ 아른거려 하나라도 올리고 자야겠다. 그리 어렵지 않은 문제. 그러나 첫번째 for문을 구현하는 문장이 조금 헷갈렸다. 더 간단한 방법이 있는지 찾아봐야겠다. 2차원 배열을 구현하려다보니 이렇게 됐다. 늘 사용하던 것들이지만 합쳐지니 복잡해보인다. import sys N = int(i..

[Python]BaekJoon.AC 2022.01.15

[Python]백준 BaekJoon.AC 10989 : 수 정렬하기3(sys, list)

https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 입력 최대 개수는 10,000,000개지만 입력값의 최대값은 10,000이다. 양은 많지만 그 가짓수는 비교적 적다는 조건을 이용했다. 그래서 리스트를 애초에 10,001개 만들어줬고(0~10,000) 입력값에 따라 1씩 카운트를 증가해줬다. 이렇게 되면 굳이 입력값이 무엇인지 저장하지 않아도 되고(리스트의 입력값번째에 카운트해주니까) 값에 따라 카운트만 해주면 되니 간편하다. 출력은 0부터 10,000까지의 리스트..

[Python]BaekJoon.AC 2022.01.14

[Python]백준 BaekJoon.AC 10814 : 나이순 정렬(list, sort())

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 크게 어려운 점은 없는 무난한 list 문제였다. 다만 age를 int 취급해줘야 하는 점 잊지 않아야겠다. 더보기 N = int(input()) mem = [] for i in range(N): age, name = input().split() mem.append([]) mem[i].append(i) mem[i].append(int(age)) mem[i].append(name) mem.sort(key..

[Python]BaekJoon.AC 2022.01.13

[Python]백준 BaekJoon.AC 7568 : 덩치(list, for문)

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 와 문제 이해를 잘못해서 삽질을....!! 그냥 키 몸무게 비교해서 등수 선정해줬더니 자꾸 틀렸다고 뜨는거 아니겠어..? 문제 이해를 못한 것 같긴 했는데 어딜 잘못 이해했는지 알 수 없었다. 그러다 3 11 11 10 12 11 13 반례를 봤는데 정답이 "1 2 1"이었다. 여기서부터 내 코드에 의구심이 들기 시작하였다. 내 머리로는 1 1 1이 정답인데! 그리고 내가 이해한 조건..

[Python]BaekJoon.AC 2022.01.13
728x90
728x90