파이썬
[python] 프로그래머스 - 수식 최대화 / 보석 쇼핑 (2020 카카오 인턴십)
1. 수식 최대화 문제 해결 1. 먼저 주어진 수식을 숫자와 연산자로 구분하여 분리 (1) 빈 배열과 숫자를 자리수마다 하나씩 쌓아 놓을 변수를 만들고 (2) 주어진 수식을 for 문을 돌린다. (3) 숫자가 나오면 | ex) 350일 경우 > tmp에 3을 더하고, 5를 더하고 0을 더해서 tmp='350' 을 만든다 (4) 연산자가 나올 경우 만들어 놓은 숫자(tmp)와 연산자를 차례로 배열에 추가 한다. tmp는 다시 초기화 (5) 3,4번을 반복하고 마지막 숫자는 다음에 올 연산자가 없으므로 끝날 때 배열에 추가해준다. 2. 연산자 우선순위 구해서 계산하기 (1) 연산자 3가지를 만들고, 퍼뮤테이션 함수를 이용해 연산자 3가지에 대한 순열을 생성 (2) 만들어 놓은 수식 배열은 여러번 계산(연산자..
[python] SWEA - 1289. 원재의 메모리 복구하기
1. 원재의 메모리 복구하기 문제 해결 1. 인덱스 다루기. D3 2. for문으로 처음부터 끝까지 차례차례 검사한다. 3. 초기 메모리 값(init) 과 복구할 메모리 (n) 의 값을 차례차례 비교하며 4. 값이 다를 경우 다른 지점부터 끝까지 n의 값을 바꿔준다. 5. 이 때 카운트를 하나 씩 더해준다. 🌞 소스 코드 T = int(input()) for tc in range(1, T+1): init = list(input()) n = ['0']*len(init) cnt = 0 for i in range(len(n)): if n[i] != init[i]: n[i:] = init[i]*len(n[i:]) cnt += 1 print('#{} {}'.format(tc, cnt)) 출처: SW Expert ..
[python] SWEA - 1961. 숫자 배열 회전/ 1970. 쉬운 거스름돈/ 10059. 유효기간
1. 숫자 배열 회전 문제 해결 1. 2차원 배열 다루기. D2 2. 90도로 회전시키는 것만 코드를 완성하면 나머지는 90도 돌린것을 또 돌리면 된다. 3. 이번에 푼 방법은 1행에 있는 모든 값을 임시배열에 넣어두고 거꾸로 해준다음 하나씩 쌓아준다. 🌧 이것 말고도 많은 방법이 있는 것으로 기억한다. 😶 소스 코드 T = int(input()) for tc in range(1, 1+T): n = int(input()) lst = [input().split() for _ in range(n)] # 90 도 회전 lst_90 = [] for j in range(n): tmp = [] for i in range(n): tmp.append(lst[i][j]) tmp.reverse() lst_90.append..
[python] SWEA - 1946. 간단한 압축 풀기/ 1945. 간단한 소인수분해
1. 간단한 압축 풀기 문제 해결 1. 문자열 인덱싱 하기. D2 2. 하나의 변수를 만들고 알파벳과 그 알파벳의 갯수만큼 문자열로 더해준다. 3. 너비가 10이므로 변수를 길이가 10만큼씩 잘라서 출력해준다. 🌧 2번과 3번을 동시에 할 수도 있을 것 같다😶 소스 코드 T = int(input()) for tc in range(1, 1+T): n = int(input()) document = '' for _ in range(n): word, number = input().split() document += word*int(number) print('#{}'.format(tc)) for i in range(0, len(document), 10): print(document[i:i+10]) 출처: SW E..
[python] 백준 - 10799. 쇠막대기
문제 해결 1. 스택을 활용한 문제. S3 2. '(' 가 나오면 막대기의 시작점이라 생각하고 stack 에 쌓는다. 3. ')' 이 나왔을 때 두가지의 경우 (1) 이전에 '(' 가 나온 경우: 쇠막대기가 아니라 레이저 이므로 잘라준다. (2) 이전에 ')' 가 나온 경우: 쇠막대기의 끝 부분 이다. 4. 레이저로 자른경우는 stack 에 쌓여있는 막대기만큼 count를 더해준다. 5. 쇠막대기의 끝부분이 나온경우 막대히 하나만큼 count를 더해준다. 🚗 소스 코드 bars = input() stack = [] cnt = 0 # '('를 막대기의 시작점으로 주고 '()' 이렇게 여는괄호와 닫는괄호가 연속으로 나오면 레이저로 취급한다. for i in range(len(bars)): if bars[i]..
[python] 백준 - 2941. 크로아티아 알파벳
문제 해결 1. 단순 인덱싱 문제?. S5 2. 크로아티아 알파벳을 배열로 만든다. 3. 크로아티아 알파벳은 두글자 혹은 세글자 이므로 (1) 두글자일 때 한번 (2) 세글자일 때 한번 체크 해준다. (3) (1), (2)가 크로아티아 알파벳이 아니라면 한글자만 알파벳으로 체크하고 다음을 진행한다. ⛅ 소스 코드 word = input() croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] idx = 0 cnt = 0 while True: if word[idx:idx+2] in croatia: idx += 2 cnt += 1 elif word[idx:idx+3] in croatia: idx += 3 cnt += 1 else: idx += 1 cnt ..