algorithm/Structures 5

[백준1406/실버2] 에디터 - Python

https://www.acmicpc.net/problem/1406 ✅ 문제 조건명령어와 커서 위치에 따라 문자열 편집L : 커서 왼쪽으로 한 칸 옮기기D : 커서 오른쪽으로 한 칸 옮기기B : 커서 왼쪽에 있는 문자 삭제P $ : 커서 왼쪽에 문자 $ 추가모든 명령어는 불가능할 경우 무시 ✅ 접근 방식시간 제한이 0.3초라 무조건 시간초과가 날 거 같았지만 일단 쌩으로 구현해보고 생각해보기로했다.pop과 insert를 사용해서 먼저 구현하고, 그 후에 rotate를 사용해서 구현했다.결론은 둘 다 시간초과가 나고, 도저히 생각이 안나서 다른 블로그를 참고했다. 내가 처음에 실패한 코드는 커서를 인덱스 번호로 생각하고 실제로 해당 값을 추가하거나 삭제하는 방식으로 구현했다.블로그에서 참고한 코드는 커서를..

[프로그래머스/Lv2] 주식가격 - Python

https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 비슷한 문제로 백준에서 17298번 오큰수 풀었던 기억이 났다.그때도 스택으로 풀었던 거 같아서 이번에도 스택으로 풀어보려고 했는데 꽤 시간이 걸렸다.오큰수는 배열을 거꾸로 순회하면서 스택에 int 하나만 저장하고 오큰수가 될 수 없는 값을 pop 하면서 풀이했는데,이 문제는 주식가격 유지 시간을 구해야했기 때문에 순서대로 순회하면서 가격과 idx를 튜플로 스택에 append했다. # 스택def solution(prices): n = le..

[Structures] List Comprehension과 any, all

1️⃣ 기본 문법[표현식 for 변수 in iterable]# exnumbers = [x for x in range(10)]print(numbers) # ➝ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2️⃣ 조건 추가 (if문)[표현식 for 변수 in iterable if 조건] ✅ 예제: 짝수만 리스트에 추가even_numbers = [x for x in range(10) if x % 2 == 0]print(even_numbers) # ➝ [0, 2, 4, 6, 8] ✅ 예제: 홀수는 제곱, 짝수는 제외squares = [x**2 for x in range(10) if x % 2 != 0]print(squares) # ➝ [1, 9, 25, 49, 81] ✅ 예제: 조건을 만족하면 다른 ..

[백준2405/골드5] 괄호의 값 - Python

https://www.acmicpc.net/problem/2504  문제 처음 보고 어떻게 괄호의 값 계산할지 엄청 고민했다.1. 괄호 하나씩 순회할때마다 전위표시법으로 바꿔서 나중에 계산하기, 2. 괄호 하나씩 나올 때마다 해당하는 숫자 (2 또는 3) 따로 저장해준 뒤 적절할 때에 최종 값에 반영하기, 3. 괄호가 닫힐때만 스택에서 이전 값 제거하면서 최종 값에 반영하기 까지 생각 해봤다. 고민해본 결과 핵심은 괄호 문자열 하나씩 순회할때마다 그 값을 저장하고 더하기가 나올 때마다 갱신해주는 거라고 생각했다.그럼 이제 언제 값을 임시로 저장해주고 더하기가 나올때마다 최종 값에 반영할 수 있지 생각해봤다. 괄호를 전부 숫자로 변경하면서 그려봤는데 분배법칙을 이용해서 풀면 되겠다는 생각이 들었다.  1...

[백준22233/실버3] 가희와 키워드 - Python

https://www.acmicpc.net/problem/22233 자꾸 시간초과나서 sys 추가해줬더니 결과 값이 달라졌다.그래서 왜 그런가 했더니 input은 자동으로 줄바꿈을 지워주는데 sys.stdin.readline은 모든 줄을 한번에 입력받기 때문에 줄바꿈을 포함해서 입력 끝에 \n이 포함된다.['map', 'dijkstra\n'] 이런식으로 출력됨 그래서 rstrip메서드를 사용하여 입력을 명확하게 구분했다. 💡 rstrip()입력 오른쪽에 있는 공백이나 줄바꿈을 지워준다.괄호 안에 특정 문자열을 넣을 경우 입력 오른쪽에 붙은 그 문자열을 다 지워준다.lsrtip()은 왼쪽 문자열 지워줌  # 성공 코드# sys.stdin.readline은 줄바꿈을 포함해서 입력 받기 때문에 /n이 포함되..