목록2022/12 (8)
똥그래미 코딩공장
https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 이 문제는 나에게 새로운 지식을 알려준 문제이다. 이 문제는 공통된 문자열을 찾는 문제인데 집합으로 문제를 풀어야한다. 나는 set()함수가 중복제거만 해주는 함수인줄 알았지만 집합으로 엮을 수도 있다는 것을 이 문제를 통해 알았다. 이 문제는 집합에서 '교집합'의 특징을 이용해야 한다. 아래의 코드를 보며 설명을 이어가겠다. n,m = map(int,input().split()) set1=se..
https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 문자열과 그리디가 합쳐진 유형이다 언뜻보면 쉬울수도 어려울수도 있는 문제이다. 이 문제의 키포인트는 숫자가 바뀌었을때를 찾고 연속해서 나오는 숫자들을 세줘야 한다는 것이다. 아래의 코드를 보며 설명해보겠다. s = input() one_count = 0 zero_count = 0 for i in range(len(s)-1): if s[i] == s[i+1]: continue else: if s[i..
https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net 문자열 일치 문제이다. 코딩테스트에서 문자열 유형의 비율이 나날이 높아져 간다. 그래서 배제 할 수 없고 꾸준히 풀어보아야한다. 난이도는 그렇게 어렵지 않았다. import sys a,b=sys.stdin.readline().split() ans = [] for i in range(len(b)-len(a)+1): cnt = 0 for k in range(le..
https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 계단 오르기 문제이다. 가장 대표적인 DP 문제중 하나라고 할 수 있다. DP 유형은 코딩테스트 단골 유형이므로 반드시 익히고 가야하는 유형 중 하나이다. 오늘 이 DP 문제를 풀어보도록 하겠다. import sys input = sys.stdin.readline num = int(input()) dp=[0]*(num+3) d=[0]*(num+3) for i in range (1,num+1): d[i]=int..
https://www.acmicpc.net/problem/1049 1049번: 기타줄 첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주 www.acmicpc.net 이 문제는 보자마자 그리디 문제라고 파악을 했고 수학적인 연산도 필요할것이라 생각했다. 그리디 문제는 가장 효율적인 방법을 찾아내야 한다. 그래서 푸는데 시간이 좀 걸린 문제였다. import sys n,m= map(int,sys.stdin.readline().split()) arr1 = [] arr2 = [] for i in range(m): a,b = map(int,sys.stdin.rea..
https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 방 번호 문제는 간단한 구현 문제이다. 최근 코딩테스트에서 구현문제의 비율이나 난이도가 높아지는 중이여서 구현문제는 꾸준히 풀어 볼 생각이다. import math num = list(map(int,input())) dup_list = [] for i in range(10): cnt = num.count(i) // 0부터9까지의 숫자들이 각각 몇번씩 들어갔는지 그 횟수를 dup_list에 담아준다 dup_list.append(cnt) print(dup_list) if max(dup_list) i..
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 이번 괄호 문제는 개인적으로 좀 까다로운 문제였다. 이걸 어떻게 접근해야하지? 생각을 했다가 '(' 와 ')' 의 갯수를 세주면서 조건을 넘어가거나 충족하지 못하면 출력값에 맞게 출력해주어 문제를 해결하였다. 아래의 코드를 보면서 보충 설명을 하겠다 T=int(input()) for _ in range(T): cnt=0 test=input() test2=list(te..
https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 이번 문제는 문제의 설명이 길어서 좀 당황했지만 읽어보면 어려운 문제는 아니였다. 단순한 구현,수학 문제여서 쉽게 풀 수 있었다. T=int(input()) for _ in range (T): h,w,n=map(int,input().split()) if h>=n: print(n*100+1) else: a,b = divmod(n,h) if b == 0: print(100*h+a) els..