baekjoon 383

[baekjoon] 백준 11478번(파이썬): 서로 다른 부분 문자열의 개수

문제 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 알고리즘 - set 자료 구조를 통해 중복을 제거한다. - 반복문을 통해 부분 문자열을 찾고 부분 문자열이 있다면 temp에 저장한다. - temp의 길이를 출력한다. 코드 import sys s = list(map(str, sys.stdin.readline().rstrip("\n"))) temp = set() # set 자료 구조를 통해 중복을 제거 # 반복문을 통해 부분 문자열을 찾는다. for i in range(len(s)): for j in range(len(s) + 1): # 부분 문자열이 있으면 temp에 저장 i..

CodingTest/Baekjoon 2022.01.18

[baekjoon] 백준 14405번(파이썬): 피카츄

문제 14405번: 피카츄 피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다. 문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문 www.acmicpc.net 알고리즘 - .replace()를 통해 피카츄가 발음할 수 있는 단어를 띄어쓰기로 바꾼다. - .strip()을 통해 띄어쓰기를 붙였을 때 길이가 0이면 피카츄가 발음할 수 있는 문자열인 것이다. 코드 import sys word = str(sys.stdin.readline().rstrip("\n")) # replace를 통해 "pi", "ka", "chu" 발음을 띄어쓰기로 바꾼다. word = word.replac..

CodingTest/Baekjoon 2022.01.17

[baekjoon] 백준 4959번(파이썬): 비밀번호 발음하기

문제 4659번: 비밀번호 발음하기 좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp www.acmicpc.net 알고리즘 - 반복문을 통해 패스워드를 확인한다. - 우선 모음이 하나라도 있는지 확인 후 없다면 not으로 출력 후 반복을 돌린다. - 모음이 하나라도 있다면 반복문과 조건문을 통해 모음이 3개 혹은 자음이 3개 연속으로 오는지 확인하면서 같은 글자가 연속적으로 두 번 나오는지 확인한다. 이때, ee와 oo는 허용한다. 코드 import sys aeiou = ["a", "e", "i", "o", "u"] # 모음 # 반복문을 통해 패스워드를 확인 wh..

CodingTest/Baekjoon 2022.01.16

[baekjoon] 백준 4889번(파이썬): 안정적인 문자열

문제 4889번: 안정적인 문자열 입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우 www.acmicpc.net 알고리즘 - 반복문을 통해 문자열을 확인한다. - 문자열이 '-'가 한 개 이상일 경우 반복문을 멈춘다. - 반복문을 통해 안정적인 문자열을 찾아 pop 한다. - 안정적인 문자열을 제외한 문자열을 안정적인 문자열로 바꿔주면서 카운트한다. 코드 import sys inx = 1 # 반복문을 통해 문자열을 확인 while True: word = list(map(str, sys.stdin.readline().strip())) # 문자열이 "-"가 한 개 이..

CodingTest/Baekjoon 2022.01.15

[baekjoon] 백준 13413번(파이썬): 오셀로 재배치

문제 13413번: 오셀로 재배치 로봇을 좋아하는 세희는 로봇동아리에서 카메라와 센서, 라즈베리 파이, 집게발을 이용해 로봇을 완성하였다. 이 로봇을 통해서 오셀로 재배치라는 작업을 하려고 한다. 오셀로 말은 앞면이 검 www.acmicpc.net 알고리즘 - 반복문을 통해 테스트 데이터를 확인한다. - 반복문을 통해 오셀로 말의 초기 상태와 목표 상태를 확인한다. - 초기 상태와 목표 상태가 다르면 초기 상태를 리스트에 추가한다. - 리스트(cnt) => "B", "W" 중에 제일 많은 개수를 가진 초기 상태의 개수를 출력하면 된다. ex) "B"의 개수가 2이고 "W"의 개수가 1일 때 "B"와 "W"의 자리를 바꿔주면 되고 "B"를 "W"로 뒤집어 주면 된다. 따라서 초기 상태와 목표 상태가 다른 ..

CodingTest/Baekjoon 2022.01.14

[baekjoon] 백준 5555번(파이썬): 반지

문제 5555번: 반지 당신은 N개의 반지를 가지고 있다. 각각의 반지는 대문자 10 문자로 이루어진 문자열이 새겨져 있다. 반지는 문자열의 시작과 끝이 연결된 형태로 문자가 새겨져 있다. 반지에 각인된 문자열을 www.acmicpc.net 알고리즘 - 반복문을 통해 반지를 확인한다. - 반지는 시작과 끝이 연결된 상태이므로 (반지 + 반지)를 해줘 문제를 수행하기 편하게 바꾼다. - 반복문을 통해 찾고자 하는 문자열이 반지에 포함되어 있는지 확인한다. - 찾고자 하는 문자열이 반지에 포함되어 있으면 카운트한 후 반복을 멈춘다. 코드 import sys word = list(map(str, sys.stdin.readline().rstrip("\n"))) n = int(sys.stdin.readline()..

CodingTest/Baekjoon 2022.01.13

[baekjoon] 백준 1251번(파이썬): 단어 나누기

문제 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 알고리즘 - 반복문을 통해 세 개의 단어로 자를 수 있는 모든 경우의 단어를 구한다. - 모든 경우의 단어를 뒤집은 후 다시 원래 순서로 합친 후 리스트에 추가한다. - 사전 순으로 가장 앞선 단어를 출력하기 위해 리스트에서 제일 작은 단어를 출력한다. 코드 import sys word = list(map(str, sys.stdin.readline().rstrip("\n"))) res = [] # 반복문을 통해 세 개의 단어로 자른다. for i in ran..

CodingTest/Baekjoon 2022.01.12

[baekjoon] 백준 2671번(파이썬): 잠수함식별

문제 2671번: 잠수함식별 입력에 들어있는 스트링을 읽고, 이것이 잠수함의 엔진소리를 나타내는 스트링인지 아니면 그냥 물속의 잡음인지를 판정한 후, 잠수함의 엔진 소리에 해당하는 스트링이면 "SUBMARINE"을 출력하고 www.acmicpc.net 알고리즘 - 정규 표현식을 지원하는 re 모듈을 사용하여 문제를 수행한다. - re.compile() 함수를 통해 () 안 패턴을 컴파일한다. - pattern과 word가 매치되는지 확인 후 매치가 되었다면 잠수함의 엔진 소리의 패턴인 것을 확인할 수 있다. 코드 import sys import re # 정규 표현식을 지원하는 re 모듈사용 word = str(sys.stdin.readline().rstrip("\n")) pattern = re.compi..

CodingTest/Baekjoon 2022.01.11

[baekjoon] 백준 1013번(파이썬): Contact

문제 1013번: Contact 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤ www.acmicpc.net 알고리즘 - 정규 표현식을 지원하는 re 모듈을 통해 문제를 수행한다 - 반복문을 통해 테스트 케이스를 확인한다. - re.compile() 함수를 통해 () 안에 패턴을 컴파일한다. - .fullmatch() 함수를 통해 컴파일한 패턴과 현재 테스트 케이스가 매치되는지 확인한다. - 매치가 되면 테스트 케이스는 제시한 패턴으로 'YES'를 출력하고 아니라면 'NO'를 출력한다. 코드 import sys import re # 정규 표현식을 지원하..

CodingTest/Baekjoon 2022.01.10

[baekjoon] 백준 9996번(파이썬): 한국이 그리울 땐 서버에 접속하지

문제 9996번: 한국이 그리울 땐 서버에 접속하지 총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다. www.acmicpc.net 알고리즘 - "*" 기준으로 왼쪽 문자열과 오른쪽 문자열로 나눈다. - 반복문을 통해 파일의 이름을 확인한다. - 파일 이름의 길이가 왼쪽, 오른쪽 문자열의 길이보다 작으면 패턴이 일치할 수 없다. - 왼쪽 문자열과 파일의 왼쪽 문자열만큼 자른 문자열이 같고, 오른쪽 문자열과 파일의 오른쪽 문자열만큼 자른 문자열이 같으면 패턴일 일치한 것이다. 코드 import sys n = int(sys.stdin.readline()) ..

CodingTest/Baekjoon 2022.01.09