Programming 77

mB/nB 인코딩에서 사용할 수 있는 codeword 개수

mB/nB 인코딩(일반적으로 n = m + 1)에서는 dataword를 codeword로 인코딩할 때 연속적으로 등장하는 0의 개수가 m 미만이 되는 것을 목표한다. (self-synchronization 위함) 4B/5B 인코딩에서 사용할 수 있는 codeward를 구하는 방식으로, 앞의 2bit와 뒤의 3bit에 1이 최소한 하나 있어야 한다고 배웠다. 그러면 codeword 내부에서도 연속된 0이 4개 이상 등장하지 않고, 두 codeword를 이어붙일 때 하나의 codeword의 뒷부분과 다른 것의 앞부분이 concatenate 됨에 따라 발생하는 연속되는 0의 개수도 4개 이상이 되지 않는다. (ex. 01100을 두 개 이어 붙이면 0110001100이고 가운데 연속적으로 생기는 0이 3개이므..

Programming 2024.04.21

tqdm(df.iterrows())

관련 글: https://www.minigb.io/295 tqdm(zip( for id, audio_path in tqdm(zip(id_list, audio_path_list)): ... 1. zip generator는 list가 하나라도 끝나면 그대로 종료한다. 만약 list의 길이가 다르면 그중에서 가장 짧은 길이만큼 iterate 하기 때문에 그 전에 두 lis www.minigb.io for idx, row in tqdm(df.iterrows()): ... pandas.DataFrame의 row를 iterate 할 때 tqdm으로 진행률을 보고 싶은 당신 막대가 보이지 않아서 당황스러우셨다고요? 괜찮아요! 우리에겐 'total'이 있으니까요! for idx, row in tqdm(df.iterro..

Programming 2024.03.22

Tail Recursion - F#에서는 recursion이 loop을 대체한다. (2)

이전 글: https://www.minigb.io/304 F#에서는 recursion이 loop을 대체한다. F#에서는 recursive function이 while과 for과 같은 loop을 대체 한다고 하셨다. 예전에 강의했을 때 누군가가 recursive function을 사용하는 것과 loop을 사용하는 것의 차이를 물어봤던 게 어렴풋이 생각났다. www.minigb.io 고수의 도움을 받았다. 🤩 감사합니다! Tail recursion에 관해 알아보았다. 아래는 챗지피티와의 대화에서 얻은 내용들입니다. Tail Recursion Tail recursion is a special case of recursion where the recursive call is the last operation i..

Programming 2024.03.19

F#에서는 recursion이 loop을 대체한다.

F#에서는 recursive function이 while과 for과 같은 loop을 대체 한다고 하셨다. 예전에 강의했을 때 누군가가 recursive function을 사용하는 것과 loop을 사용하는 것의 차이를 물어봤던 게 어렴풋이 생각났다. 내가 제시한 코드가 loop으로도 할 수 있는 거였는데 굳이 recursive function을 써야 하는지 같은 거였다. 나는 함수에서 recursive 하게 한 번 호출하는 건 loop으로 바꿀 수 있고, 지금이 그런 경우지만, 예를 들어 merge sort처럼 recursive 한 호출을 두 번 이상 해야 하는 경우는 loop으로 해결할 수 없다는 식으로 대답했던 거 같았다. 그러다가 봄 초급 divide & conquer 강의할 때 맨 마지막에 했던 말..

Programming 2024.03.15

[BOJ 24553] 팰린드롬 게임

https://www.acmicpc.net/problem/24553 24553번: 팰린드롬 게임 각 게임에서 상윤이가 이긴다면 0, 승우가 이긴다면 1을 출력한다. www.acmicpc.net 오늘 (24년 1월 16일) 영어 스터디에서 풀었던 문제 게임이론은 늘 어렵다. 그래서 optimal 한 게 뭔데? 처음 나온 솔루션은 dp 테이블을 만들어서 dp[n][k] (k = 0, 1)을 돌이 n개 남았을 때 k가 이길 수 있는지를 binary 하게 저장하는 거였다. 그리고 이건 모든 dp[n - (palindrome smaller than n)][!k]를 and operation으로 연산한 것으로 결정된다. 원래는 ‘음 그렇지 그렇게 할 수 있을 거 같아. 시간 복잡도는 얼마지?’를 물어보고 ‘근데 조금..

Programming 2024.01.17

tqdm(zip(

for id, audio_path in tqdm(zip(id_list, audio_path_list)): ... 1. zip generator는 list가 하나라도 끝나면 그대로 종료한다. 만약 list의 길이가 다르면 그중에서 가장 짧은 길이만큼 iterate 하기 때문에 그 전에 두 list의 길이가 같은지 확인해보는 게 좋다. assert len(id_list) == len(audio_path_list), f'{len(id_list)} != {len(audio_path_list)}' 사소한 습관은 중요하다. 2. zip은 generator이기 때문에 그때그때 lazy 하게 item을 생성한다. 그러므로 zip이 생성하는 것의 총 element 개수를 미리 알 수 없기 때문에 tqdm이 예상되는 전체..

Programming 2024.01.12

[BOJ 25577] 열 정렬정렬 정

https://www.acmicpc.net/problem/25577 25577번: 열 정렬정렬 정 첫 번째 줄에 배열의 크기 $N(4 ≤ N​ ≤ 100\,000)$이 주어진다. 그다음 줄에 배열의 원소 $A_1, A_2, \cdots, A_n (-10^9 ≤ A_i ≤ 10^9, i \neq j $ 이면 $ A_i \neq A_j )$ 이 주어진다. 배열의 원소는 모두 정수이다 www.acmicpc.net 하나의 예를 살펴보자. 1 7 2 9 3 8 0 이것은 이렇게 정렬되어야 한다. 0 1 2 3 7 8 9 1이 있는 자리에 0이 있어야 하고, 0이 있는 자리에 9가 있어야 하고, 9가 있는 자리에 3이 있어야 하고, … 그렇다. 그러므로 여기서 현재의 상태와, 이것이 어떻게 바뀌어야 하는지 간의 관..

Programming 2023.09.27

Bit Masking & Prefix Sum (BOJ 15661, BOJ 21758)

랩실에서 과제 하려다가 초급 스터디를 들었는데 많은 걸 배웠고 재밌었다. 끝나고 스터디에서 다룬 문제들 풀다가 기록하고 싶은 것들 * Bit Masking * BOJ 15661 링크와 스타트 한 팀을 기준으로 그 팀에 속해 있는 사람들을 비트로 관리할 때 두 사람 (i, j)이 같은 팀에 속해 있는지는 둘 다 비트가 켜져 있거나 꺼져 있는지로 확인할 수 있다. int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector arr(n, vector(n)); for (int i = 0; i > arr[i][j]; } } int ans..

Programming 2023.04.13

[CF] Round #787 (Div. 3) _ 220505

오-월은 푸-르구나- 우리들은 자란-다 오늘은 어린이날 우-리들 세상 https://codeforces.com/contest/1675 https://codeforces.com/contest/1675 codeforces.com 원래는 이왕 그린이 된 거 다음 주에 있는 Div.4를 참가해보려고 했는데 오늘 컨디션이 너무 좋았고 Div.3인 김에 오랜만에 참가했다. 최근에 B에서 막힌 적도 많고 가장 최근 Div.3에 안 좋은 기억이 있어서 긴장했는데 다행히 오른다! A. Div.3 A를 틀리는 사람이 있다...? 다급한 마음에 처음에 a랑 x, b랑 y 값을 반대로 비교했고 그 외에도 전반적으로 잘못 짰다. ㅠㅠ 침착하자. int main() { ios::sync_with_stdio(0); cin.tie(..

Programming 2022.05.06

[BOJ] 24545 Y

https://www.acmicpc.net/problem/24545 24545번: Y 첫째 줄에 트리의 정점 개수를 의미하는 정수 $N$이 주어진다. ($2 \leq N \leq 100\,000$) 둘째 줄부터 $N-1$개 줄에 걸쳐 트리를 이루는 간선의 정보를 나타내는 두 정수 $u$, $v$가 주어진다. 이는 $u$번 정 www.acmicpc.net 리쓴 투 마 와....아 SUAPC에서 푼 문제 중 기록해두고 싶은 문제다. 대회 때 내가 1인분을 하는 데 기여해줬다. 대회 중에 더 이상 문제가 안 풀려서 한참 진전이 없었을 때 팀원들과 셋이 의논하면서 솔루션을 도출해냈다. 이야기하다가 내가 문득 트리의 지름이 떠올렸고, 트리의 지름에 있는 노드들을 보면서 리프 노드까지의 개수가 최대인 걸 구하면 되..

Programming 2022.04.06