본문 바로가기

분류 전체보기

(224)
[python] 9519 - 졸려 9519번: 졸려 (acmicpc.net) 9519번: 졸려 첫째 줄에 X(1 ≤ X ≤ 1,000,000,000) 가 주어지고, 둘째 줄에 X번 깜박인 후의 단어가 주어진다. 단어는 알파벳 소문자로만 이루어져 있고, 길이는 구간 [3,1000]에 포함된다. www.acmicpc.net 문자열 구현 문제였다. 처음 접근 방식은 다음과 같다. 문자열을 원래대로 복원하기만 하면 되기 때문에 바꿔야 할 알파벳 수를 구한 후 문자열을 바꾼다. 처음 주어진 규칙을 반대로 하기만 하면 되기 때문에 while문을 이용하여 횟수만큼 반복한 후 문자열을 출력한다. 그런데 두 번째 예제를 보니 왠지 시간초과에 걸릴 것만 같았다.. 문자열이 모두 같은 알파벳일 경우 횟수에 의미가 없기 때문이다. 그래서 중간에 break도 ..
[python] 3107 - IPv6 3107번: IPv6 (acmicpc.net) 3107번: IPv6 첫째 줄에 올바른 IPv6 주소가 주어진다. 이 주소는 최대 39글자이다. 또한, 주소는 숫자 0-9, 알파벳 소문자 a-f, 콜론 :으로만 이루어져 있다. www.acmicpc.net 문제 자체는 간단했다. 주어진 IPv6 주소를 원래의 주소로 복원하면 되는 문제였는데 접근 방식은 다음과 같다. 1. ':'을 기준으로 문자열을 나눈 리스트를 생성한다. 2. 리스트를 돈다 2-1. 원소가 공백이 아니라면 - 원소의 길이가 4가 아닐때 4가 될 때까지 앞자리를 0으로 채운다. - 원소의 길이가 4라면 넘어간다. 2-2. 원소가 공백이라면 - '0000' 을 전체 문자열에서 공백을 지운 크기 만큼 추가한다. - 그리고 cnt로 상태를 체크하..
[python] 2469 - 사다리 타기 2469번: 사다리 타기 (acmicpc.net) 2469번: 사다리 타기 첫 줄에는 참가한 사람의 수 k가 나온다(3 ≤ k ≤ 26). 그 다음 줄에는 가로 막대가 놓일 전체 가로 줄의 수를 나타내는 n이 나온다(3 ≤ n ≤ 1,000). 그리고 세 번째 줄에는 사다리를 타고 난 후 결정 www.acmicpc.net 접근을 잘못했던 문제였다. ?로 주어지는 가로줄을 추측할 때에 ['*', '-']에서 가로줄 크기 만큼 고르는 중복 순열로 접근을 했더니 문제가 굉장히 복잡해졌다. 더욱이 사다리 모양이 헷갈려서.. 결국 구글 검색을 통해 풀이를 찾아보고 말았다. 그랬더니 엄청나게 간단한 풀이가 있었다. 왜 진작 이렇게 생각을 못했을까? ?가 나오는 배열 이전과 이후로 나눠 바로 직전의 문자 배열을 구한..
[python] 2608 - 로마 숫자 2608번: 로마 숫자 (acmicpc.net) 2608번: 로마 숫자 첫째 줄과 둘째 줄에 하나씩 로마 숫자로 표현된 수가 주어진다. 입력된 각 수는 2000 보다 작거나 같고, 두 수의 합은 4000보다 작다. www.acmicpc.net 뭐랄까.. 굉장히 어렵진 않지만 조건들도 많았고 구현하기 싫게 생긴 문제였다. 우선, 딕셔너리에 각 문자 값들을 구분해서 담아준 후 문자를 숫자로 변환하는 함수와 숫자를 문자로 변환하는 함수 두개를 만들어 주었다. 문자를 숫자로 변환하는 과정은 크게 까다롭지 않았으나 숫자를 문자로 변환할 때가 만족스럽지 않은 코드였다. 숫자의 자리수와 값을 토대로 if문을 사용하여 케이스를 나눠주었는데 두 숫자의 합에 대한 값이 4000 이하로 제한되어 있기 때문에 해결은 되었지만..
[python] 7490 - 0 만들기 7490번: 0 만들기 (acmicpc.net) 7490번: 0 만들기 각 테스트 케이스에 대해 ASCII 순서에 따라 결과가 0이 되는 모든 수식을 출력한다. 각 테스트 케이스의 결과는 한 줄을 띄워 구분한다. www.acmicpc.net # 7490 0 만들기 from itertools import product import sys input = sys.stdin.readline #아스키 코드 값으로 정렬 하려먼 공백-> + -> - sign=[' ', '+', '-'] for _ in range(int(input())): # 오름차순 리스트 numList = [ i for i in range(1, int(input())+1)] # 부호에 대한 중복 순열 리스트, 각 케이스 별로 0이 되는지를 체크 ..
[python] 문자열로 된 식을 계산하기 - eval, exec 1.eval() eval()은 파이썬의 내장 함수로 문자열로 이루어진 식을 실행한다. s = '1+2+3' print(eval(s)) # 6 2.exec() exec() '='가 들어간 문자열로 이루어진 '문'을 수행한다. exec()은 변수 선언과 할당이 가능하지만 eval과 달리 결과값을 반환하지 않는다. exec("s=1+2+3") print(s) # 6 print(exec("s=1+2+3")) # None
[python] 프로그래머스 Lv2. - [2018 KAKAO] 압축 코딩테스트 연습 - [3차] 압축 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from string import ascii_uppercase def solution(msg): alpa=[i for i in ascii_uppercase] answer = [] i=0 while msg: tmp=msg[i] for j in range(i+1, len(msg)): if tmp+msg[j] in alpa: tmp+=msg[j] else: alpa.append(tmp+msg[j]) break answer.a..
[python] 알파벳 리스트 만들기 코테 준비를 하며 여러 문제를 풀다보면 특히, 문자열 구현 문제를 풀다보면 알파벳 리스트를 사용해야 하는 경우가 꽤 많다. 하드코딩으로 리스트를 생성할 수도 있는데 너무 번거롭기 때문에 간단한 방법을 정리해 놓으려고 한다. 1. 아스키 코드 변환 이용 alpa=[chr(i) for i in range(ord('a'), ord('z')+1)] 2. string 모듈 이용 from string import ascii_lowercase# ascii_uppercase : 대문자 alpa=[i for i in ascii_lowercase]

728x90