CodingTest 432

[baekjoon] 백준 3048번(파이썬): 개미

문제 3048번: 개미 T초가 지난 후에 개미의 순서를 출력한다. 첫 번째 개미 그룹은 왼쪽에서 오른쪽으로 움직이고, 두 번째 그룹은 반대 방향으로 움직인다. www.acmicpc.net 알고리즘 - 두 개미 그룹 중 첫 번째 그룹의 개미들이 오른쪽으로 움직인다고 생각하며 문제를 수행한다. - t초동안 반복하고 총개미의 길이만큼 반복하여 두 개미 그룹의 위치를 확인한다. - 두 개미 그룹이 만났다면 그 두 개미의 위치를 바꾼다. - 이 반복은 선두 개미의 위치가 바뀌기 전까지 반복하며 선두 개미의 위치가 바뀌었다면 반복을 멈춰준다. 코드 import sys n1, n2 = map(int, sys.stdin.readline().split()) ant1 = list(map(str,sys.stdin.readl..

CodingTest/Baekjoon 2022.01.20

[baekjoon] 백준 2002번(파이썬): 추월

문제 2002번: 추월 입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이 www.acmicpc.net 알고리즘 - 반복문을 통해 들어간 차량은 딕셔너리형으로 나간 차량은 리스트 형식으로 입력받는다. - 반복문을 통해 먼저 들어갔다가 나온 차량보다 더 빨리 나온 차량이 있는지 확인한다. 코드 import sys n = int(sys.stdin.readline()) firstCar = {} out = [] cnt = 0 # 반복문을 통해 들어간 차를 딕셔너리로 입력 받음 for i in range(n): firstCar[str(sys.stdin..

CodingTest/Baekjoon 2022.01.19

[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

[programers] 프로그래머스 카카오(파이썬) : [1차] 다트 게임

문제 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 알고리즘 - 계산하기 편하게 하기 위해 "10"을 "A"로 변환한다. - 'S', 'D', 'T'를 리스트에 넣어 각 인덱스 + 1 만큼 제곱할 수 있게 설계한다. - 초기 시작 값을 설정하는데 'A'라면 10으로 초기화하고 그 외 문자라면 int()로 변환하여 초기화한다. - 반복문을 통해 문자를 확인한다. - 문자가 sdt에 포함되어 있다면 현재 수를 인덱스 +1만큼 제곱한다. - 문자가 "*"이라면 현재 수를 두배 해주고 이전에 수가 있다면 이전 수도 두배 해준다. - 문자가 "#"라면 현재 수를 -해준다. - 그 외 문자라면 숫자인 것으로 게임 한판이 끝난 것이다. - 총점수를 answer에 추가해주고 다음 게임의 초기 ..

[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