728x90

전체 글 98

[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

[Python]백준 BaekJoon.AC 2751 : 수 정렬하기2(sys, sort())

https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 왜 이런 문제가 이 난이도에 있을까 무조건 의심부터 시작했지만.. 시간제한이 2초나 되서, 파이썬은 괜찮지 않을까 싶어 뚝딱뚝딱 제출했더니 역시나 시간초과였다!.. 이 심플한 문제에 다른 풀이과정이 어떤게 있을까 생각했다. 리스트 크기를 1,000,000으로 정해두고 boolean으로 받아야 하나, 별 생각을 다 해봤는데. sys로 숫자를 받아야 통과되는 문제인 듯 했다. 다른 방법도 ..

[Python]BaekJoon.AC 2022.01.13

[Python]백준 BaekJoon.AC 2609 : 최대공약수와 최소공배수(유클리드 호제법)

유클리드 호제법을 이용해 최소공약수와 최대공배수를 구하라는 문제. 두 수 중 큰 수를 작은 수로 나누고, 그 나머지로 원래 큰 수를 대신한다. 둘 중 한쪽이 0이 될 때까지 실행하며 다른 값이 최대공약수다. 원래 두 수를 곱한 값에서 최대공약수를 나누면 최소공배수가 된다. 원리는 알지만 늘 신기하다!ㅋㅋㅋ 그리고 그 원리를 늘 다시 까먹는다. 다시 공부하고 신기해하고 반복.. 최소공배수 구하는 건 새로워서 이 방법으로 해봤다. 참신하고 신기하다.. A, B = map(int, input().split()) copyA, copyB = A, B while not (A==0 or B==0): if max(A, B) == A: A = A % B else: B = B % A result = max(A, B) pr..

[Python]BaekJoon.AC 2022.01.12

[Python]백준 BaekJoon.AC 1436 : 영화감독 숌(브루트포스, find())

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 브루트포스 알고리즘이란 확신이 없었을 땐 이런 저런 구상들을 해봤는데, 아무리 생각해도 하나씩 카운트 해주는게 신속정확할 것 같았다. 1씩 늘려주는 변수 num을 처음부터 666으로 설정한 이유는, 666이 조건을 만족하는 첫 숫자이기 때문이다. (1~665)는 시간낭비가 확실하니 666을 처음으로 뒀다. while문을 사용했고, num을 1씩 증가시켜주며 666이 포함된 숫자인지 체크한다. 이..

[Python]BaekJoon.AC 2022.01.11

[Python]백준 BaekJoon.AC 1181 : 단어 정렬(sort())

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 정렬을 정식으로 접해봤다. 나름 쉽고 간편하다.. 리스트에 단어들을 넣어주고, set을 이용해 중복을 제거해줬다. 그리고 sort를 이용해 정렬을 시도했다. 리스트 항목의 길이를 최우선으로 뒀고, 사전식 배열을 다음 순위로 설정했다. 괄호 안에 순서대로 넣으면 된다. 굿! N = int(input()) words = [] for i in range(N): words.append(inpu..

[Python]BaekJoon.AC 2022.01.11

[Python]백준 BaekJoon.AC 1018 : 체스판 다시 칠하기(list, for문)

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net string 문자열을 그냥.. st = "abcd"로 선언하고 st[1]을 프린트하면 b가 출력되더라...? 2차원 배열을 리스트로 어떻게 구현해야 할까 고민했는데 그냥 리스트에 문자열을 통채로 넣으면 되는 거였다. 그 자체가 2차원 리스트라 말할 수 있다. 대신 특정 방법을 사용하지 않는 한 수정은 안되는 듯 하다. 너무 신기하고 기특한 파이썬...!ㅋㅋ 더 간추리는 방법이 있지만 가독성..

[Python]BaekJoon.AC 2022.01.10

[Python]백준 BaekJoon.AC 11050 : 이항 계수1(for문)

https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 이항계수를 설명하고 싶지만... 수학문제는 풀어도 용어는 잘 몰라서...;;ㅋㅋ 이항식을 풀어냈을 때..? 문자 앞에 붙은 숫자.. 계수..?를 구하기 위해 콤비네이션을 사용하는데, 우리나라는 그냥 콤비네이션을 사용하면 이항계수를 구할 수 있다고 가르쳐준다! 결과우선주의는 효율적이다. 하지만 나에겐 이항계수를 설명할 능력이 없어 이 정도로 부연설명을 마친다.. 더 깔끔한 코드를 고민했지만 문제의 조건범위가 좁고 자칫 난해할 것 같아 직관적으로 구현했다. 다만 N!/K!을 ..

[Python]BaekJoon.AC 2022.01.09

[Python]백준 BaekJoon.AC 2869 : 달팽이는 올라가고 싶다(ceil())

https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 문제가 요구하는 방식 그대로, 달팽이의 행적을 쫒아... 코드를 작성했는데. 아무리 기다려도 예제3번 답 출력이 안되는 것....? 더보기 A, B, V = map(int, input().split()) high = 0 days = 1 while True: high = high + A if V

[Python]BaekJoon.AC 2022.01.09

[Java]백준 BaekJoon.AC 1967 : 트리의 지름 (dfs, Tree)

https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 파이썬 다시 시작한지 얼마 안돼 헷갈리기도 했고... 감 잃을까봐 오랜만에 자바를 해봤다. BufferedReader문장 기억 안나서 너무 당황스러웠다ㅋㅋㅋㅋㅋ(웃다보니 웃을 일이 아님) 심지어 다른 것도 기억이 안나서..(코쓱 IntelliJ로 프로그램 바꾸고 처음한 코딩이라 낯선 것도 있었지만 그새 까먹은건 분명했다..ㅋㅋㅋ;; 그래도 파이썬 할 때도 나왔던 자바 습관은 여..

[Java]BaekJoon.AC 2022.01.09

[Python]백준 BaekJoon.AC 2839 : 설탕 배달(for문, if문, reversed())

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 마음과 달리 조금 복잡한 코드가 나왔다... 그냥 while문을 돌리는게 나았을 것 같기도 하다. 처음 N값을 5로 나눠 if문을 돌린 이유는, N이 4미만인 경우를 걸러내기 위해서다. 그 와중에도 3키로일 수도 있으니 if를 한 번 더 사용해줬다. 그 후부턴 N을 5로 나눈 몫으로 for문을 돌려줬다. 0

[Python]BaekJoon.AC 2022.01.07

[Python]백준 BaekJoon.AC 1259 : 팰린드롬수(slice)

https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 파이썬 기능을 이용한다면 그렇게 어렵지 않은 문제였다. slice를 이용해 문자열을 뒤집어 비교했다. while True: st = input() if st == "0": quit() rever = st[::-1] if st == rever : print("yes") else: print("no")

[Python]BaekJoon.AC 2022.01.06

[Python]백준 BaekJoon.AC 15829 : Hashing(ord(), 아스키코드)

https://www.acmicpc.net/problem/15829 15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 모듈러 개념을 제대로 몰라 힘들었던 기억이 있는 문제다. 며칠을 끙끙대며 풀었는데.. 요번엔 곧잘 풀어내서 그래도 실력이 조금은 늘었나 싶다. 장황하게 설명을 해뒀지만 결국 아래식을 코드로 구현해내란 뜻이다. 우선 소문자 알파벳을 리스트로 받아줬다. for문을 이용해 이 리스트들을 하나씩 꺼내 아스키코드로 변환해주고, 96을 빼 1부터 26까지의 숫자로 만들어준다. (a의 아스키코드가 97이기 ..

[Python]BaekJoon.AC 2022.01.06

[Python]백준 BaekJoon.AC 2798 : 블랙잭(브루트포스 알고리즘)

https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net card 리스트에 카드 정보들을 넣어주고, 첫번째 카드를 뽑는 for문(i) 두번째 카드를 뽑는 for문(j) 세번째 카드를 뽑는 for문(l)을 만들어준다. 여기서 포인트는 각 for문의 범위다. 두번째 카드와 세번째 카드의 시작점을 직전에 뽑은 카드의 다음 카드로 설정해줬다. 끝점은.. 만약 첫번째 for문의 끝점이 N이고 N-2번 카드를 뽑았다면, 두번째 카드..

[Python]BaekJoon.AC 2022.01.06
728x90