728x90
반응형
SMALL

전체 글 230

[Python] 카드 뭉치

✏️ 문제 문제 파악처음에는 차례대로 있는 지가 중요한 거니까 cards1과 cards2의 카드들이 goal에 나타나는 순서와 일치하는지 확인하는 코드를 짰다.goal에 나타나는 cards1과 cards2 카드들이 각각 올바른 순서대로 존재한다면 "Yes"를 반환하고 순서가 틀리면 "No"를 반환하도록 했는데 20, 21, 24, 25번 테스트에서 런타임 에러가 떴었다 .. 딕셔너리를 써서 제출해도 똑같았다..  그래서 goal의 배열 값이 cards1 또는 cards2에 있다면 맨 앞 값을 없애는.. 방향으로 코드를 짰다.이때 배열의 맨 앞 값을 없애는 코드는 다음과 같다.ary.pop(0)   코드런타임 에러 코드def solution(cards1, cards2, goal): for i in r..

[Python] 옹알이 (2)

✏️ 문제 문제 파악woo는 발음할 수 있으나 wo는 발음할 수 없으므로 할 수 있는 발음과 "정확히" 같아야 한다.그래서 babbling의 배열 값에 할 수 있는 발음을 차례대로 제거하는 방향으로 replace를 활용하면 된다. for b in babbling: for l in languge: b = b.replace(l, '') 연속해서 같은 발음을 할 수 없다는 유의사항이 있기 때문에 연속해서 같은 발음이 있다면 바로 발음할 수 없는 것으로 처리해주어야 한다! 중요한 것은 만약 replace로 발음 대신 빈값을 넣으면 ["yayae"]이 입력으로 들어올 시 aya를 제거하면 남은 문자가 ye가 되어 할 수 있는 발음으로 처리된다!!!때문에 할 수 있는 발음 대신에 빈 값이 아닌 다..

[Velog] 여러 게시물을 자동으로 삭제시키기

예전에 사용했던 velog 게시물을 좀 정리하려고 보니 velog는 여러 게시물을 선택해 삭제하는 방법이 없어서.. 코딩해서 삭제시켰다..! velog 궁금하다면 클릭 게시물을 삭제하려면 로그인을 해야하는데 velog는 로그인할 때 아이디, 비밀번호를 입력하는 것이 아닌이메일을 입력해서 입력한 이메일으로 온 링크를 통해 로그인Github, Google 등 연동으로 클릭해서 로그인이렇게 두 가지 방식이다.  나는 이메일 로그인 방식이라 코드도 이메일 로그인 방식으로 작성했다는 것을 참고하길 바란다.  이메일로 온 보라색 링크를 login_link 변수에 넣으면 된다. (근데 잘못 눌러버리면 링크가 유효하지 않게 되어서 다시 발급 받아야 됨.. 내 얘기) 그리고 Chrome 브라우저를 제어하기 위해 Sele..

카테고리 없음 2024.10.16

[CSS] CSS? SCSS? SASS? 총 정리

1. CSS CSS는 HTML 문서의 레이아웃과 스타일을 지정하는 데 사용되는 스타일 시트 언어입니다. 웹 페이지의 시각적 요소인 색상, 글꼴, 여백 등을 설정할 수 있으며 브라우저가 이해할 수 있는 기본 스타일링 언어로 전 세계적으로 널리 사용되고 있습니다. 장점단점모든 브라우저에서 지원되며 웹 표준을 준수하므로 거의 모든 웹 사이트에서 사용 가능기본적인 스타일링을 적용하는 데 아주 간단하다. HTML 파일에 링크하여 사용하는 방식으로 별도의 설정이 필요하지 않으며 웹 개발을 시작하는 초보자도 쉽게 접근 가능캐스케이딩(Cascading)으로 스타일 규칙이 여러 곳에서 적용될 때 우선순위를 자동으로 계산하여 최종 스타일 결정변수, 조건문, 반복문과 같은 기능이 없기 때문에 스타일을 반복해서 작성해야 하..

프론트엔드/CSS 2024.10.11

[Python] 2193번 이친수

✏️ 문제 문제 파악n이 1, 2, 3, 4, 5일 때 각각 dp[n]의 값을 구하면 쉽게 점화식을 구할 수 있다. 그림을 그려보면 다음과 같다.num 배열은 dp 배열 앞뒤 값의 차이를 담은 배열이다.그림을 보면 다음과 같은 점화식이 나오는 것을 알 수 있다.num[n] = dp[n-1]dp[n] = dp[n-1] + num[n-1] 나중에 보니 dp 배열 자체가 피보나치 수열와 같았음... = 이 말은 즉 num 배열 필요 X..  알고리즘다이나믹 프로그래밍  코드n = int(input())num = [0, 1, 1]dp = [1, 1, 2]for i in range(3, n): num.append(dp[i-1]) dp.append(dp[i-1] + num[i-1])print(dp[n-1])

PS/백준 2024.09.15

[Python] 1904번 01타일, 자세한 설명, 그림 참조

✏️ 문제 문제 파악n이 1, 2, 3, 4일 때 각각 dp[n]의 값을 구하면 쉽게 점화식을 구할 수 있다. 그림을 그려보면 다음과 같다.하지만 이 문제는 메모리가 적고 시간이 매우 짧다는 점..!고민해보니 3개짜리 배열만 사용하면 되는 거 같아서 인덱스로 들어올 값을 %3 해 인덱스로 써서 풀었다. 그리고 이 문제는 답에 15746으로 나눈 값을 구하고 있다.처음엔 마지막 print에서 % 15746 했었는데 시간 초과가 떠서 애초에 배열에 값을 넣을 때 % 15746을 하니 풀렸다!  알고리즘다이나믹 프로그래밍  코드n = int(input())dp = [1, 2, 3]for i in range(3, n+1): dp[(i-1) % 3] = (dp[i % 3] + dp[(i+1) % 3]) % 1..

PS/백준 2024.09.15

[Python] 11660번 구간 합 구하기 5, 그림 참조

✏️ 문제문제 파악dp 배열을 주어진 배열의 누적 합을 담는 배열로 정의한 후 각 배열에 대해 그림으로 작성하면 다음과 같이 나온다.코드에 대해서 너무 헷갈려서 IndexError가 계속 났다..ary 배열은 0부터, dp 배열은 1부터 시작하는 것을 잊지 말자... 두 개가 각각 index 0, 1부터 시작하지 않으면 코드가 매~우 길어져요...  알고리즘다이나믹 프로그래밍 누적 합 코드시간 초과 코드처음엔 그냥 단순하게 풀어봤지만 틀렸다. 당연함. 실버 1문제임.n, m = map(int, input().split())ary = [list(map(int, input().split())) for _ in range(n)]for _ in range(m): x1, y1, x2, y2 = map(int, ..

PS/백준 2024.09.15

[Python] 14501번 퇴사, 그림 설명, 자세한 설명

✏️ 문제 문제 파악처음에는 시작점을 기준으로 잡아서 풀려고 했는데 경우의 수가 너무 많았다...!  뭔가 2156번 포도주 문제랑 2579번 계단 오르기 문제랑 비슷할 것 같아서 시간을 좀 썼는데 결국 못풀었다 ㅠ.. 아쉽 이 문제의 포인트는 시작점이 아닌 "끝점"을 기준으로 푸는 것이 포인트이다!끝점부터 시작점까지 내려오는데 해당 위치에 있을 때 n일 때 상담한다.n일 때 상담하지 않는다.이 두 가지 경우로 나누어서 둘 중에 더 큰 값을 dp[n]에 대입해야 한다.n일 때 상담하지 않는 경우를 왜 고려하냐면 n일 때 상담하지 않고 n-1일 때 상담했을 때 (n-1일 때 t[n-1]이 2 이상일 경우) 더 이득일 경우도 있기 때문이다.무조건 n일 때 꼭 상담하라는 말이 없기 때문이다.그림으로 작성하면 ..

PS/백준 2024.09.14

[Python] 2156번 포도주 시식, 그림 설명, 자세한 설명, 완벽 분석

✏️ 문제 문제 파악2579번 계단 오르기 와 유사한 문제이다!저 문제와의 차이점은 계단 오르기는 꼭 마지막 계단을 밟아야 하는데 이 문제는 꼭 마셔야 하는 포도주가 없다는 것이다. 그러면 경우의 수를 나누면 다음과 같이 나온다.n번째 포도주를 마신다.n-2번째 포도주를 마셨다.n-3번째 포도주와 n-1번째 포도주를 마셨다.n번째 포도주를 마시지 않는다.n-2번째 포도주와 n-1번째 포도주를 마셨다.나는 다른 풀이들이 다 해당 포도주를 마시지 않는다는 조건을 두길래 왜 최대를 구하는데 마시지 않는 조건을 고려하는 거지? 라고 생각했는데 이유를 생각해보니 다음과 같았다. 해당 포도주를 마시지 않는다는 조건을 두는 이유는n번째 포도주를 마시지 않고 n-2번째 포도주와 n-1번째 포도주를 마셨을 때 최대일..

PS/백준 2024.09.14

[알고리즘] 카데인 알고리즘 (Kadane's Algorithm)

카데인 알고리즘 (Kadane's Algorithm) ?배열 내의 연속된 부분 배열의 합 중에서 합이 최대인 부분 배열을 찾는 알고리즘이다.배열을 한 번 순회하면서 현재 위치에서 끝나는 가장 큰 부분 배열의 합을 계산하고 이를 통해 전체 배열에서의 최대 부분 배열 합을 구하는 방식이다. 이 알고리즘은 시간 복잡도가 O(n), 공간 복잡도가 O(1)로 매우 효율적이다. 또한 1차원 배열뿐만 아니라 2차원 배열에서도 적용할 수 있다. 2차원 배열에서 최대 합을 갖는 부분 행렬을 찾는 문제는 복잡하지만 알고리즘을 행별로 적용하여 문제를 1차원 문제로 축소함으로써 해결할 수 있다. 핵심 아이디어카데인 알고리즘은 다음과 같은 두 가지 값을 사용한다.현재까지의 최대 부분 배열 합 (current_max) : 특정 ..

알고리즘 2024.09.13
728x90
반응형
LIST