본문 바로가기

ALGORITHM/백준67

[BOJ/PYTHON] 5052. 전화번호 목록 백준 문제 링크: https://www.acmicpc.net/problem/5052 문제 요약 주어진 전화번호 목록이 일관성이 있는지 없는지 구하기 일관성 있는 번호: 한 번호가 다른 번호의 접두어인 경우가 있으면 안 됨 핵심 아이디어 입력을 문자열로 받아서 정렬하면 숫자 크기와 상관 없이 사전순으로 정렬되기 때문에 맨 앞부터 순서대로 정렬된다. 정렬을 하고 시작하기 때문에 바로 다음 것과 비교하면 된다. i번째 번호를 기준으로 삼았을 때, i+1번째 번호를 i번째 번호 길이까지만 보고, 둘이 동일하면 일관성 없는 것으로 보면 된다. 테스트 케이스 중 하나인 911, 91125426로 예시를 들어보자면 i번째 번호인 911을 기준으로 본다. 911의 길이는 3이다. 91125426을 앞 3개까지만 보면 .. 2023. 6. 1.
[BOJ/PYTHON] 14425. 문자열 집합 백준 문제 링크: https://www.acmicpc.net/problem/14425 문제 요약 check_list중 몇 개가 집합 s에 포함돼있는지 구하기 핵심 아이디어 if (check_list 중 하나) in (집합 s 문자열) 이면 카운트를 올려주면 된다. 풀이 # silver3-14425. 문자열 집합 import sys input = sys.stdin.readline n, m = map(int, input().split()) s_list = [input().rstrip() for _ in range(n)] # 집합 s에 포함돼있는 문자열 check_list = [input().rstrip() for _ in range(m)] # 검사해야 하는 문자열 cnt = 0 for string in ch.. 2023. 6. 1.
[BOJ/PYTHON] 15904. UCPC는 무엇의 약자일까? 백준 문제 링크: https://www.acmicpc.net/problem/15904 문제 요약 축약해서 UCPC가 되면 I love UCPC 출력, 안 되면 I hate UCPC 출력 핵심 아이디어 대문자만 뽑았을 때 무조건 UCPC만 나와야 하는 건 아니다. 축약해서 UCPCC가 되는 경우도 UCPC로 축약 가능하기 때문에 대문자만 이어붙였을 때 ‘UCPC’와 일치하는지로 풀면 안 된다. I love UCPC도 대문자만 보면 IUCPC이지만 UCPC로 축약 가능하다. 결국, 대문자만 봤을 때 뭐가 있든 UCPC가 순서대로 존재하기만 하면 된다. 인덱스 변수를 지정해주고 U, C, P, C가 순서대로 들어있는 UCPC 리스트에서 UCPC[index]가 이번에 보는 대문자와 동일하면 리스트에 넣어주는 방.. 2023. 6. 1.
[BOJ/PYTHON] 2866. 문자열 잘라내기 백준 문제 링크: https://www.acmicpc.net/problem/2866 문제 요약 테이블을 세로로 읽어 문자열 만들 수 있음 가장 위 행 지워도 열에서 중복 문자열 없으면 가장 위 행 지워주고 카운트 1 증가 중복 문자열 있으면 카운트 출력 후 종료 핵심 아이디어 세로로 읽은 문자열 리스트를 먼저 만들어준다. 그 문자열 리스트에서 일단 가장 위 행을 지워주고, 중복 문자 체크를 한다. set으로 중복 제거한 것의 개수랑 중복 제거 안 한 것의 개수가 같다면 중복이 존재한다는 말이기 때문에 카운트를 출력하고 종료한다. 아닐 경우 카운트를 증가시켜주면 된다. 문제에서는 행 지워도 문제 없으면 → 지우기 인데, 일단 지우고 중복 여부를 확인하는 것이 구현 상으로도 편리하고 별도의 문제도 없다. 풀.. 2023. 6. 1.
[BOJ/PYTHON] 8892. 팰린드롬 백준 문제 링크: https://www.acmicpc.net/problem/8892 문제 요약 팰린드롬은 어느 방향으로 읽어도 항상 같은 방법으로 읽을 수 있는 단어인데, 단어 k개 주어졌을 때, 팰린드롬을 찾으면 된다. 공책에 있는 단어들 중 두 단어를 합쳐 팰린드롬이 나와야 한다. 핵심 아이디어 두 단어씩 다 합쳐보고 합친 애랑 거꾸로 한 애랑 같으면 팰린드롬 리스트에 넣으면 된다. 풀이 # silver5-8892. 팰린드롬 import sys input = sys.stdin.readline t = int(input()) # 테스트 케이스 for _ in range(t): k = int(input()) # 단어의 수 words = [list(map(str, input().rstrip())) for _.. 2023. 6. 1.
[BOJ/PYTHON] 19591. 독특한 계산기 백준 문제 링크: https://www.acmicpc.net/problem/19591 문제 요약 수식에서 맨 앞의 연산자, 또는 맨 뒤의 연산자 먼저 계산한다. 단, 음수의 부호는 연산자로 취급하지 않는다. 곱셈, 나눗셈을 덧셈, 뺄셈보다 더 먼저 계산한다. 연산자의 우선순위가 같다면 해당 연산자를 계산했을 때 결과가 큰 것부터 계산한다. 계산했을 때 결과 값 또한 같다면 앞에 것을 먼저 계산한다. 맨 앞 숫자만 음수가 들어올 수 있음 불필요한 0이 앞에 있을 수 있음. (001 + 0002 가능) (출력 시 제거해야) 나눗셈은 나누어지는 수가 양수면 나머지가 0 이상, 음수면 나머지가 0 이하로 처리가 되는 식으로 진행했을 때 나오는 몫을 계산 핵심 아이디어 주의해야 하는 조건만 잘 처리해주면 나머지는.. 2023. 6. 1.