Problem Solving (PS)(17)
-
이취코테(구현 기초) - 문자열 재정렬 문제
문제. 알파벳 대문자와 숫자(0~9)로만 이루어진 문자열 s가 입력으로 주어진다. 모든 알파벳을 오름차순 정렬하여 이어서 출력하고, 그 뒤에 모든 숫자를 더한 값을 이어서 출력한다. 조건 : 1소) 순으로 정렬 n_list = list(map(str, [i for i in range(10)])) # 0~9 숫자를 str로 저장 result = "" for i in range(len(s)) : if s[i] not in n_list : # s[i]가 알파벳이면 슬라이싱하고 break num = s[:i] string = s[i:] break num = list(map(int, num)) result = ''.join(string) + str(sum(num)) print(result) 10000개의 데이터에..
2022.10.15 -
백준 1904번 : 01타일
문제. https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 실패) 시도 아이디어 : n이 짝수일 때 모든 경우의 수는 1을 짝수번(0, 2, 4, 6, ... , n) 사용하는 경우로 나눌 수 있다. n이 홀수일 때 모든 경우의 수는 1을 홀수번(1, 3, 5, 7, ... , n) 사용하는 경우로 나눌 수 있다. 00을 하나의 문자 X로 생각할 수 있다. 1의 개수 k개, X의 개수 : n-k/2 개 -> 총 k + (n-k)/2 개의 원소 모든 원소..
2022.10.14 -
이취코테(구현 기초) - 상하좌우 문제
문제. 초기 위치 = 가장 왼쪽 위의 좌표 = (1, 1) 이고, 가장 오른쪽 아래의 좌표는 (N, N) 이다. 이 위치에서부터 사람이 이동을 한다. 이동 할 수 있는 경우는 4가지이다. (R은 오른쪽, L은 왼쪽, U는 위쪽, D는 아래쪽) 첫 줄에 공간을 나타내는 N이 주어져 N x N 크기의 정사각형 공간을 만든다. 둘째 줄에는 띄어쓰기를 기준으로 움직인 경로들이 주어진다. 조건 : 1 n or x+dx[j] > n : # 정사각형 이외의 공간으로의 움직임은 무시 pass else : # 정사각형을 벗어나지 않는 움직임 x += dx[j] y += dy[j] break # 부연 설명 print(x, y) # 부연 설명 if trace[i] == move[j] : 조건문을 처리 하면, 더이상 같은 t..
2022.10.14 -
이취코테(구현 기초) - 시각 문제
문제. 정수 N(0 분에 '3'이 존재하면 모든 초가 전부 count, 분에 '3'이 없으면 초에 '3'이 있을때만 count 구현 : n = int(input()) count = 0 for hour in range(n+1) : if str(3) in str(hour) : # 시에 3이 있는 경우 count += (60*60) else : # 시에 3이 없는 경우 count += (15*60 + 45*15) # (분에 3이 있는 경우 + 분에 3이 없고 초에만 3이 있는 경우) print(count) 다른 방법) 아이디어 : 가능한 모든 경우가 총 몇 가지 인지 먼저 확인 -> 24*60*60 = 86,400 가지 뿐이므로 브루트포스로 시, 분, 초 각각을 확인 가능 구현 : n = int(input()..
2022.10.14 -
백준 10828번 : 스택
문제 링크 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 시도1 (시간초과) N = int(input()) stack = [] for _ in range(N) : content = input().split(' ') if content[0] == 'push' : stack.append(content[1]) if content[0] == 'pop' : if len(stack) == 0 : print(-1) else : pop_n..
2022.06.26