전체 글 404

BaekJoon Online Judge 10809번 파이썬

문제 링크 https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 10808번 문제와 비슷한 문제다. index()함수를 사용하여 각각의 알파벳이 처음으로 등장하는 위치를 알아내었다. 사용되지 않는 알파벳때문에 ValueError가 나타나서 try except문으로 해결하였다. 정답 코드 import sys S = sys.stdin.readline() S = S.lower() alphabet_list = ['a','b','c','d','e..

BaekJoon Online Judge 10808번 파이썬

문제 링크 https://www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net count함수를 이용하여 각각의 알파벳이 몇개 있는지 개수를 세었다. 그리고 그 개수를 한줄로 출력하기 위해 print함수에 end =“” 를 사용했다. 정답 코드 import sys S = sys.stdin.readline() S = S.lower() alphabet_list = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] for i i..

BaekJoon Online Judge 10845번 파이썬

문제 링크 https://www.acmicpc.net/problem/10845 먼저 각각의 기능에 맞는 함수를 작성하였다. push함수는 입력 받을 때 숫자와 함께 입력하므로 cmd를 리스트로 입력받아 cmd[1]을 함수의 매개변수로 사용하였다. 정답 코드 import sys N = int(sys.stdin.readline()) queue = [] def push(X): queue.append(X) def pop(): if len(queue) == 0: print(-1) else: print(queue[0]) queue.pop(0) def size(): print(len(queue)) def empty(): if len(queue) == 0: print(1) else: print (0) def front..

BaekJoon Online Judge 9012번 파이썬

문제 링크 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net VPS이면 ()가 지워져도 또 다른 ()가 생겨 ()를 지우다보면 결국은 공백의 문자열이 될 것이다. 이 생각을 바탕으로 ()가 있을 경우에 계속 ()를 공백으로 replace 했다. 그리고 더이상 replace가 되지 않을 때, 그 결과가 공백이면 VPS인 것으로 판단하여 YES를 출력하고 공백이 아니라면 NO를 출력하게 하였다. 정답 코드 N = int..

BaekJoon Online Judge 10828번 파이썬

문제 링크 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 5개 기능의 함수를 만들어서 문제를 해결했다. 정답 코드 import sys def push(x): stack.append(x) def top(): if len(stack) == 0: print(-1) else: print(stack[len(stack)-1]) def pop(): if len(stack) == 0: print(-1) else: print(stack[le..

TIL 10장 클래스

오늘 TIL 3줄 요약 클래스는 한가지 책임을 가져야 한다. 큰 함수를 쪼개다보면 작은 클래스 여럿으로 쪼갤 기회가 생긴다. 클래스는 유연성과 재사용성이 높아야한다. TIL (Today I Learned) 2022.05.10 오늘 읽은 범위 10장. 클래스 책에서 기억하고 싶은 내용을 써보세요. 클래스 이름은 해당 클래스 책임을 기술해야 한다. 간결한 이름이 떠오르지 않는다면 필경 클래스 크기가 너무 커서 그렇다. (p.175) 단일 책임 원칙은 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다. 클래스는 책임, 즉 변경할 이유가 하나여야한다는 의미다. (p.175) 큰 함수를 작은 함수 여럿으로 쪼개다 보면 종종 작은 클래스 여럿으로 쪼갤 기회가 생긴다. 그러면서 프로그램에 점점 더..

BaekJoon Online Judge 11004번 파이썬

문제 링크 https://www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 리스트를 오름차순 정렬 후에 출력만 하면 되는 문제였다. 정답 코드 import sys N, K = map(int, sys.stdin.readline().split()) numbers =[0] * N numbers = list(map(int,sys.stdin.readline().split())) result = sorted(numbers) print(result[K-1])

BaekJoon Online Judge 11652번 파이썬

문제 링크 https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 처음에 작성한 코드 import sys N = int(sys.stdin.readline()) cards = [] for i in range(0,N): cards.append( int(sys.stdin.readline())) count = [0] * N for card in cards: count[card] += 1 max = max(count) print(max) 대충 위와 같은 ..

TIL 9장 단위 테스트

오늘 TIL 3줄 요약 테스트 코드도 깨끗하게 짜야한다. 테스트 코드는 지속적으로 관리하고 표현력을 높여야한다. 테스트 함수 하나 당 하나만 테스트해야한다. TIL (Today I Learned) 2022.05.08 오늘 읽은 범위 9장. 단위 테스트 책에서 기억하고 싶은 내용을 써보세요. TDD 법칙 세가지: 1. 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 2. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 3. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 실제 코드가 진화하면 테스트 코드도 변해야 한다. 그런데 테스트 코드가 지저분할 수록 변경하기 어려워진다. (p.156) 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목..

TIL 7장 오류처리

오늘 TIL 3줄 요약 예외가 발생할 코드를 짤 때는 try-catch-finally 문으로 시작하자. 메서드가 null을 반환하게 하지말고 빈리스트를 반환하도록하는게 낫다. 깨끗한 코드는 안정성도 높아야한다. TIL (Today I Learned) 2022.05.05 오늘 읽은 범위 7장. 오류처리 책에서 기억하고 싶은 내용을 써보세요. try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. 그러므로 예외가 발생할 코드를 짤 때는 try-catch-finally 문으로 시작하는 편이 낫다. 그러면 try 블록에서 무슨 일이 생기든지 호출자가 기대하는 상태를 정의하기 쉬워진다. (p.132) 먼저 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하..

728x90