This repository was archived by the owner on Mar 18, 2024. It is now read-only.

[2023-08-30] wooyeol #161 - #177

Merged
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161
Aug 30, 2023
Merged

[2023-08-30] wooyeol #161#177
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161

Conversation

@Woo-Yeol

Copy link
Copy Markdown
Member

PR Summary

암호 만들기
https://www.acmicpc.net/problem/1759

풀이시간
10:52 ~ 11:43 (49분)

문제 조건
3 <= L <= C <= 15
L개의 알파벳 소문자 (최소 한 개의 모음과 두 개의 자음)

시간 복잡도 : O(L x C)

접근법
무슨 알고리즘으로 풀이 할 수 있을까? -> 백 트래킹

  • 주어진 알파벳을 정렬하고 방문한 알파벳은 표시를 해둔다.
  1. 백트래킹을 구현하며 Base Condition(길이가 L과 같고 모음의 갯수가 0보다 크고 자음의 갯수가 1보다 클 경우)일 경우만 값을 출력

  2. 백 트래킹을 위한 검사문들을 작성한다.

    1. 중복을 허용하지 않고 알파벳 사전순일 경우만 확인하기 때문에 현재 담겨있는 알파벳보다 더 큰 인덱스 값만 검사한다.

    2. 방문하지 않은 알파벳일 경우
      2-1. 현재 위치를 방문 처리하고 해당 값을 Password에 넣은 뒤 자음과 모음 갯수를 업데이트한다.
      2-2. 다음 자리 알파벳을 백 트래킹으로 찾는다.
      2-3. 탐색된 알파벳을 방문처리를 해제하고 자,모음 갯수를 다시 업데이트 한다.

@Woo-YeolWoo-Yeol self-assigned this Aug 30, 2023
@Woo-YeolWoo-Yeol linked an issue Aug 30, 2023 that may be closed by this pull request

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 백트래킹 풀이같아요! 변수명이 직관적이어서 이해가 잘 됐습니다~!!!

@limstonestonelimstonestone left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 풀이 감사합니다 우열님!!

@zsmallazsmalla left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

재귀에서 매개변수가 복잡해지면 풀이가 비교적 단순해지고, 매개변수가 단순해지면 풀이가 비교적 복잡해지는 특성이 있는 것 같다는 걸 느꼈습니다. 둘 중 어떤 것이 맞고 틀리고가 아닌 본인이 편한 것을 선택하면 좋을 것 같아요. 고생하셨습니다!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개인적으로 정렬된 리스트를 탐색하거나 순서가 정해진 경우의 백트래킹, 재귀에서는 매개변수를 통해 인덱스를 증가시키는 방향으로 재귀를 수행하는 것을 선호합니다. 그러면 별도의 방문 처리가 필요 없거든요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vowels: Set[str] = {'a', 'e', 'i', 'o', 'u'} 처럼 작성해도 좋을 것 같습니다. 저도 몰랐었는데 PEP8에서 리스트나 셋을 선언할 때 a=set() 이렇게 선언하는 것을 지양하더라구요! set() 이나 list() 키워드는 형변환 할 때에만 사용하고 선언 시에는 braket만 써도 좋을 것 같습니다!

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zsmalla 오 꿀팁 감사합니다 지수님!

@Woo-Yeol
Woo-Yeol merged commit 8651dc8 into mainAug 30, 2023
@Woo-Yeol
Woo-Yeol deleted the wooyeol-#161 branch August 30, 2023 14:41
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOJ] 암호 만들기

4 participants

@Woo-Yeol@ksumini@zsmalla@limstonestone
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Mar 18, 2024. It is now read-only.

[2023-08-30] wooyeol #161 - #177

Merged
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161
Aug 30, 2023
Merged

[2023-08-30] wooyeol #161#177
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161

Conversation

@Woo-Yeol

Copy link
Copy Markdown
Member

PR Summary

암호 만들기
https://www.acmicpc.net/problem/1759

풀이시간
10:52 ~ 11:43 (49분)

문제 조건
3 <= L <= C <= 15
L개의 알파벳 소문자 (최소 한 개의 모음과 두 개의 자음)

시간 복잡도 : O(L x C)

접근법
무슨 알고리즘으로 풀이 할 수 있을까? -> 백 트래킹

  • 주어진 알파벳을 정렬하고 방문한 알파벳은 표시를 해둔다.
  1. 백트래킹을 구현하며 Base Condition(길이가 L과 같고 모음의 갯수가 0보다 크고 자음의 갯수가 1보다 클 경우)일 경우만 값을 출력

  2. 백 트래킹을 위한 검사문들을 작성한다.

    1. 중복을 허용하지 않고 알파벳 사전순일 경우만 확인하기 때문에 현재 담겨있는 알파벳보다 더 큰 인덱스 값만 검사한다.

    2. 방문하지 않은 알파벳일 경우
      2-1. 현재 위치를 방문 처리하고 해당 값을 Password에 넣은 뒤 자음과 모음 갯수를 업데이트한다.
      2-2. 다음 자리 알파벳을 백 트래킹으로 찾는다.
      2-3. 탐색된 알파벳을 방문처리를 해제하고 자,모음 갯수를 다시 업데이트 한다.

@Woo-YeolWoo-Yeol self-assigned this Aug 30, 2023
@Woo-YeolWoo-Yeol linked an issue Aug 30, 2023 that may be closed by this pull request

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 백트래킹 풀이같아요! 변수명이 직관적이어서 이해가 잘 됐습니다~!!!

@limstonestonelimstonestone left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 풀이 감사합니다 우열님!!

@zsmallazsmalla left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

재귀에서 매개변수가 복잡해지면 풀이가 비교적 단순해지고, 매개변수가 단순해지면 풀이가 비교적 복잡해지는 특성이 있는 것 같다는 걸 느꼈습니다. 둘 중 어떤 것이 맞고 틀리고가 아닌 본인이 편한 것을 선택하면 좋을 것 같아요. 고생하셨습니다!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개인적으로 정렬된 리스트를 탐색하거나 순서가 정해진 경우의 백트래킹, 재귀에서는 매개변수를 통해 인덱스를 증가시키는 방향으로 재귀를 수행하는 것을 선호합니다. 그러면 별도의 방문 처리가 필요 없거든요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vowels: Set[str] = {'a', 'e', 'i', 'o', 'u'} 처럼 작성해도 좋을 것 같습니다. 저도 몰랐었는데 PEP8에서 리스트나 셋을 선언할 때 a=set() 이렇게 선언하는 것을 지양하더라구요! set() 이나 list() 키워드는 형변환 할 때에만 사용하고 선언 시에는 braket만 써도 좋을 것 같습니다!

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zsmalla 오 꿀팁 감사합니다 지수님!

@Woo-Yeol
Woo-Yeol merged commit 8651dc8 into mainAug 30, 2023
@Woo-Yeol
Woo-Yeol deleted the wooyeol-#161 branch August 30, 2023 14:41
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOJ] 암호 만들기

4 participants

@Woo-Yeol@ksumini@zsmalla@limstonestone
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Mar 18, 2024. It is now read-only.

[2023-08-30] wooyeol #161 - #177

Merged
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161
Aug 30, 2023
Merged

[2023-08-30] wooyeol #161#177
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161

Conversation

@Woo-Yeol

Copy link
Copy Markdown
Member

PR Summary

암호 만들기
https://www.acmicpc.net/problem/1759

풀이시간
10:52 ~ 11:43 (49분)

문제 조건
3 <= L <= C <= 15
L개의 알파벳 소문자 (최소 한 개의 모음과 두 개의 자음)

시간 복잡도 : O(L x C)

접근법
무슨 알고리즘으로 풀이 할 수 있을까? -> 백 트래킹

  • 주어진 알파벳을 정렬하고 방문한 알파벳은 표시를 해둔다.
  1. 백트래킹을 구현하며 Base Condition(길이가 L과 같고 모음의 갯수가 0보다 크고 자음의 갯수가 1보다 클 경우)일 경우만 값을 출력

  2. 백 트래킹을 위한 검사문들을 작성한다.

    1. 중복을 허용하지 않고 알파벳 사전순일 경우만 확인하기 때문에 현재 담겨있는 알파벳보다 더 큰 인덱스 값만 검사한다.

    2. 방문하지 않은 알파벳일 경우
      2-1. 현재 위치를 방문 처리하고 해당 값을 Password에 넣은 뒤 자음과 모음 갯수를 업데이트한다.
      2-2. 다음 자리 알파벳을 백 트래킹으로 찾는다.
      2-3. 탐색된 알파벳을 방문처리를 해제하고 자,모음 갯수를 다시 업데이트 한다.

@Woo-YeolWoo-Yeol self-assigned this Aug 30, 2023
@Woo-YeolWoo-Yeol linked an issue Aug 30, 2023 that may be closed by this pull request

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 백트래킹 풀이같아요! 변수명이 직관적이어서 이해가 잘 됐습니다~!!!

@limstonestonelimstonestone left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 풀이 감사합니다 우열님!!

@zsmallazsmalla left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

재귀에서 매개변수가 복잡해지면 풀이가 비교적 단순해지고, 매개변수가 단순해지면 풀이가 비교적 복잡해지는 특성이 있는 것 같다는 걸 느꼈습니다. 둘 중 어떤 것이 맞고 틀리고가 아닌 본인이 편한 것을 선택하면 좋을 것 같아요. 고생하셨습니다!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개인적으로 정렬된 리스트를 탐색하거나 순서가 정해진 경우의 백트래킹, 재귀에서는 매개변수를 통해 인덱스를 증가시키는 방향으로 재귀를 수행하는 것을 선호합니다. 그러면 별도의 방문 처리가 필요 없거든요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vowels: Set[str] = {'a', 'e', 'i', 'o', 'u'} 처럼 작성해도 좋을 것 같습니다. 저도 몰랐었는데 PEP8에서 리스트나 셋을 선언할 때 a=set() 이렇게 선언하는 것을 지양하더라구요! set() 이나 list() 키워드는 형변환 할 때에만 사용하고 선언 시에는 braket만 써도 좋을 것 같습니다!

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zsmalla 오 꿀팁 감사합니다 지수님!

@Woo-Yeol
Woo-Yeol merged commit 8651dc8 into mainAug 30, 2023
@Woo-Yeol
Woo-Yeol deleted the wooyeol-#161 branch August 30, 2023 14:41
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOJ] 암호 만들기

4 participants

@Woo-Yeol@ksumini@zsmalla@limstonestone
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Mar 18, 2024. It is now read-only.

[2023-08-30] wooyeol #161 - #177

Merged
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161
Aug 30, 2023
Merged

[2023-08-30] wooyeol #161#177
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161

Conversation

@Woo-Yeol

Copy link
Copy Markdown
Member

PR Summary

암호 만들기
https://www.acmicpc.net/problem/1759

풀이시간
10:52 ~ 11:43 (49분)

문제 조건
3 <= L <= C <= 15
L개의 알파벳 소문자 (최소 한 개의 모음과 두 개의 자음)

시간 복잡도 : O(L x C)

접근법
무슨 알고리즘으로 풀이 할 수 있을까? -> 백 트래킹

  • 주어진 알파벳을 정렬하고 방문한 알파벳은 표시를 해둔다.
  1. 백트래킹을 구현하며 Base Condition(길이가 L과 같고 모음의 갯수가 0보다 크고 자음의 갯수가 1보다 클 경우)일 경우만 값을 출력

  2. 백 트래킹을 위한 검사문들을 작성한다.

    1. 중복을 허용하지 않고 알파벳 사전순일 경우만 확인하기 때문에 현재 담겨있는 알파벳보다 더 큰 인덱스 값만 검사한다.

    2. 방문하지 않은 알파벳일 경우
      2-1. 현재 위치를 방문 처리하고 해당 값을 Password에 넣은 뒤 자음과 모음 갯수를 업데이트한다.
      2-2. 다음 자리 알파벳을 백 트래킹으로 찾는다.
      2-3. 탐색된 알파벳을 방문처리를 해제하고 자,모음 갯수를 다시 업데이트 한다.

@Woo-YeolWoo-Yeol self-assigned this Aug 30, 2023
@Woo-YeolWoo-Yeol linked an issue Aug 30, 2023 that may be closed by this pull request

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 백트래킹 풀이같아요! 변수명이 직관적이어서 이해가 잘 됐습니다~!!!

@limstonestonelimstonestone left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 풀이 감사합니다 우열님!!

@zsmallazsmalla left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

재귀에서 매개변수가 복잡해지면 풀이가 비교적 단순해지고, 매개변수가 단순해지면 풀이가 비교적 복잡해지는 특성이 있는 것 같다는 걸 느꼈습니다. 둘 중 어떤 것이 맞고 틀리고가 아닌 본인이 편한 것을 선택하면 좋을 것 같아요. 고생하셨습니다!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개인적으로 정렬된 리스트를 탐색하거나 순서가 정해진 경우의 백트래킹, 재귀에서는 매개변수를 통해 인덱스를 증가시키는 방향으로 재귀를 수행하는 것을 선호합니다. 그러면 별도의 방문 처리가 필요 없거든요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vowels: Set[str] = {'a', 'e', 'i', 'o', 'u'} 처럼 작성해도 좋을 것 같습니다. 저도 몰랐었는데 PEP8에서 리스트나 셋을 선언할 때 a=set() 이렇게 선언하는 것을 지양하더라구요! set() 이나 list() 키워드는 형변환 할 때에만 사용하고 선언 시에는 braket만 써도 좋을 것 같습니다!

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zsmalla 오 꿀팁 감사합니다 지수님!

@Woo-Yeol
Woo-Yeol merged commit 8651dc8 into mainAug 30, 2023
@Woo-Yeol
Woo-Yeol deleted the wooyeol-#161 branch August 30, 2023 14:41
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOJ] 암호 만들기

4 participants

@Woo-Yeol@ksumini@zsmalla@limstonestone
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Mar 18, 2024. It is now read-only.

[2023-08-30] wooyeol #161 - #177

Merged
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161
Aug 30, 2023
Merged

[2023-08-30] wooyeol #161#177
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161

Conversation

@Woo-Yeol

Copy link
Copy Markdown
Member

PR Summary

암호 만들기
https://www.acmicpc.net/problem/1759

풀이시간
10:52 ~ 11:43 (49분)

문제 조건
3 <= L <= C <= 15
L개의 알파벳 소문자 (최소 한 개의 모음과 두 개의 자음)

시간 복잡도 : O(L x C)

접근법
무슨 알고리즘으로 풀이 할 수 있을까? -> 백 트래킹

  • 주어진 알파벳을 정렬하고 방문한 알파벳은 표시를 해둔다.
  1. 백트래킹을 구현하며 Base Condition(길이가 L과 같고 모음의 갯수가 0보다 크고 자음의 갯수가 1보다 클 경우)일 경우만 값을 출력

  2. 백 트래킹을 위한 검사문들을 작성한다.

    1. 중복을 허용하지 않고 알파벳 사전순일 경우만 확인하기 때문에 현재 담겨있는 알파벳보다 더 큰 인덱스 값만 검사한다.

    2. 방문하지 않은 알파벳일 경우
      2-1. 현재 위치를 방문 처리하고 해당 값을 Password에 넣은 뒤 자음과 모음 갯수를 업데이트한다.
      2-2. 다음 자리 알파벳을 백 트래킹으로 찾는다.
      2-3. 탐색된 알파벳을 방문처리를 해제하고 자,모음 갯수를 다시 업데이트 한다.

@Woo-YeolWoo-Yeol self-assigned this Aug 30, 2023
@Woo-YeolWoo-Yeol linked an issue Aug 30, 2023 that may be closed by this pull request

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 백트래킹 풀이같아요! 변수명이 직관적이어서 이해가 잘 됐습니다~!!!

@limstonestonelimstonestone left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 풀이 감사합니다 우열님!!

@zsmallazsmalla left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

재귀에서 매개변수가 복잡해지면 풀이가 비교적 단순해지고, 매개변수가 단순해지면 풀이가 비교적 복잡해지는 특성이 있는 것 같다는 걸 느꼈습니다. 둘 중 어떤 것이 맞고 틀리고가 아닌 본인이 편한 것을 선택하면 좋을 것 같아요. 고생하셨습니다!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개인적으로 정렬된 리스트를 탐색하거나 순서가 정해진 경우의 백트래킹, 재귀에서는 매개변수를 통해 인덱스를 증가시키는 방향으로 재귀를 수행하는 것을 선호합니다. 그러면 별도의 방문 처리가 필요 없거든요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vowels: Set[str] = {'a', 'e', 'i', 'o', 'u'} 처럼 작성해도 좋을 것 같습니다. 저도 몰랐었는데 PEP8에서 리스트나 셋을 선언할 때 a=set() 이렇게 선언하는 것을 지양하더라구요! set() 이나 list() 키워드는 형변환 할 때에만 사용하고 선언 시에는 braket만 써도 좋을 것 같습니다!

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zsmalla 오 꿀팁 감사합니다 지수님!

@Woo-Yeol
Woo-Yeol merged commit 8651dc8 into mainAug 30, 2023
@Woo-Yeol
Woo-Yeol deleted the wooyeol-#161 branch August 30, 2023 14:41
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOJ] 암호 만들기

4 participants

@Woo-Yeol@ksumini@zsmalla@limstonestone
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Mar 18, 2024. It is now read-only.

[2023-08-30] wooyeol #161 - #177

Merged
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161
Aug 30, 2023
Merged

[2023-08-30] wooyeol #161#177
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161

Conversation

@Woo-Yeol

Copy link
Copy Markdown
Member

PR Summary

암호 만들기
https://www.acmicpc.net/problem/1759

풀이시간
10:52 ~ 11:43 (49분)

문제 조건
3 <= L <= C <= 15
L개의 알파벳 소문자 (최소 한 개의 모음과 두 개의 자음)

시간 복잡도 : O(L x C)

접근법
무슨 알고리즘으로 풀이 할 수 있을까? -> 백 트래킹

  • 주어진 알파벳을 정렬하고 방문한 알파벳은 표시를 해둔다.
  1. 백트래킹을 구현하며 Base Condition(길이가 L과 같고 모음의 갯수가 0보다 크고 자음의 갯수가 1보다 클 경우)일 경우만 값을 출력

  2. 백 트래킹을 위한 검사문들을 작성한다.

    1. 중복을 허용하지 않고 알파벳 사전순일 경우만 확인하기 때문에 현재 담겨있는 알파벳보다 더 큰 인덱스 값만 검사한다.

    2. 방문하지 않은 알파벳일 경우
      2-1. 현재 위치를 방문 처리하고 해당 값을 Password에 넣은 뒤 자음과 모음 갯수를 업데이트한다.
      2-2. 다음 자리 알파벳을 백 트래킹으로 찾는다.
      2-3. 탐색된 알파벳을 방문처리를 해제하고 자,모음 갯수를 다시 업데이트 한다.

@Woo-YeolWoo-Yeol self-assigned this Aug 30, 2023
@Woo-YeolWoo-Yeol linked an issue Aug 30, 2023 that may be closed by this pull request

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 백트래킹 풀이같아요! 변수명이 직관적이어서 이해가 잘 됐습니다~!!!

@limstonestonelimstonestone left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 풀이 감사합니다 우열님!!

@zsmallazsmalla left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

재귀에서 매개변수가 복잡해지면 풀이가 비교적 단순해지고, 매개변수가 단순해지면 풀이가 비교적 복잡해지는 특성이 있는 것 같다는 걸 느꼈습니다. 둘 중 어떤 것이 맞고 틀리고가 아닌 본인이 편한 것을 선택하면 좋을 것 같아요. 고생하셨습니다!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개인적으로 정렬된 리스트를 탐색하거나 순서가 정해진 경우의 백트래킹, 재귀에서는 매개변수를 통해 인덱스를 증가시키는 방향으로 재귀를 수행하는 것을 선호합니다. 그러면 별도의 방문 처리가 필요 없거든요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vowels: Set[str] = {'a', 'e', 'i', 'o', 'u'} 처럼 작성해도 좋을 것 같습니다. 저도 몰랐었는데 PEP8에서 리스트나 셋을 선언할 때 a=set() 이렇게 선언하는 것을 지양하더라구요! set() 이나 list() 키워드는 형변환 할 때에만 사용하고 선언 시에는 braket만 써도 좋을 것 같습니다!

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zsmalla 오 꿀팁 감사합니다 지수님!

@Woo-Yeol
Woo-Yeol merged commit 8651dc8 into mainAug 30, 2023
@Woo-Yeol
Woo-Yeol deleted the wooyeol-#161 branch August 30, 2023 14:41
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOJ] 암호 만들기

4 participants

@Woo-Yeol@ksumini@zsmalla@limstonestone
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Mar 18, 2024. It is now read-only.

[2023-08-30] wooyeol #161 - #177

Merged
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161
Aug 30, 2023
Merged

[2023-08-30] wooyeol #161#177
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161

Conversation

@Woo-Yeol

Copy link
Copy Markdown
Member

PR Summary

암호 만들기
https://www.acmicpc.net/problem/1759

풀이시간
10:52 ~ 11:43 (49분)

문제 조건
3 <= L <= C <= 15
L개의 알파벳 소문자 (최소 한 개의 모음과 두 개의 자음)

시간 복잡도 : O(L x C)

접근법
무슨 알고리즘으로 풀이 할 수 있을까? -> 백 트래킹

  • 주어진 알파벳을 정렬하고 방문한 알파벳은 표시를 해둔다.
  1. 백트래킹을 구현하며 Base Condition(길이가 L과 같고 모음의 갯수가 0보다 크고 자음의 갯수가 1보다 클 경우)일 경우만 값을 출력

  2. 백 트래킹을 위한 검사문들을 작성한다.

    1. 중복을 허용하지 않고 알파벳 사전순일 경우만 확인하기 때문에 현재 담겨있는 알파벳보다 더 큰 인덱스 값만 검사한다.

    2. 방문하지 않은 알파벳일 경우
      2-1. 현재 위치를 방문 처리하고 해당 값을 Password에 넣은 뒤 자음과 모음 갯수를 업데이트한다.
      2-2. 다음 자리 알파벳을 백 트래킹으로 찾는다.
      2-3. 탐색된 알파벳을 방문처리를 해제하고 자,모음 갯수를 다시 업데이트 한다.

@Woo-YeolWoo-Yeol self-assigned this Aug 30, 2023
@Woo-YeolWoo-Yeol linked an issue Aug 30, 2023 that may be closed by this pull request

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 백트래킹 풀이같아요! 변수명이 직관적이어서 이해가 잘 됐습니다~!!!

@limstonestonelimstonestone left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 풀이 감사합니다 우열님!!

@zsmallazsmalla left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

재귀에서 매개변수가 복잡해지면 풀이가 비교적 단순해지고, 매개변수가 단순해지면 풀이가 비교적 복잡해지는 특성이 있는 것 같다는 걸 느꼈습니다. 둘 중 어떤 것이 맞고 틀리고가 아닌 본인이 편한 것을 선택하면 좋을 것 같아요. 고생하셨습니다!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개인적으로 정렬된 리스트를 탐색하거나 순서가 정해진 경우의 백트래킹, 재귀에서는 매개변수를 통해 인덱스를 증가시키는 방향으로 재귀를 수행하는 것을 선호합니다. 그러면 별도의 방문 처리가 필요 없거든요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vowels: Set[str] = {'a', 'e', 'i', 'o', 'u'} 처럼 작성해도 좋을 것 같습니다. 저도 몰랐었는데 PEP8에서 리스트나 셋을 선언할 때 a=set() 이렇게 선언하는 것을 지양하더라구요! set() 이나 list() 키워드는 형변환 할 때에만 사용하고 선언 시에는 braket만 써도 좋을 것 같습니다!

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zsmalla 오 꿀팁 감사합니다 지수님!

@Woo-Yeol
Woo-Yeol merged commit 8651dc8 into mainAug 30, 2023
@Woo-Yeol
Woo-Yeol deleted the wooyeol-#161 branch August 30, 2023 14:41
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOJ] 암호 만들기

4 participants

@Woo-Yeol@ksumini@zsmalla@limstonestone
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Mar 18, 2024. It is now read-only.

[2023-08-30] wooyeol #161 - #177

Merged
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161
Aug 30, 2023
Merged

[2023-08-30] wooyeol #161#177
Woo-Yeol merged 1 commit into
mainfrom
wooyeol-#161

Conversation

@Woo-Yeol

Copy link
Copy Markdown
Member

PR Summary

암호 만들기
https://www.acmicpc.net/problem/1759

풀이시간
10:52 ~ 11:43 (49분)

문제 조건
3 <= L <= C <= 15
L개의 알파벳 소문자 (최소 한 개의 모음과 두 개의 자음)

시간 복잡도 : O(L x C)

접근법
무슨 알고리즘으로 풀이 할 수 있을까? -> 백 트래킹

  • 주어진 알파벳을 정렬하고 방문한 알파벳은 표시를 해둔다.
  1. 백트래킹을 구현하며 Base Condition(길이가 L과 같고 모음의 갯수가 0보다 크고 자음의 갯수가 1보다 클 경우)일 경우만 값을 출력

  2. 백 트래킹을 위한 검사문들을 작성한다.

    1. 중복을 허용하지 않고 알파벳 사전순일 경우만 확인하기 때문에 현재 담겨있는 알파벳보다 더 큰 인덱스 값만 검사한다.

    2. 방문하지 않은 알파벳일 경우
      2-1. 현재 위치를 방문 처리하고 해당 값을 Password에 넣은 뒤 자음과 모음 갯수를 업데이트한다.
      2-2. 다음 자리 알파벳을 백 트래킹으로 찾는다.
      2-3. 탐색된 알파벳을 방문처리를 해제하고 자,모음 갯수를 다시 업데이트 한다.

@Woo-YeolWoo-Yeol self-assigned this Aug 30, 2023
@Woo-YeolWoo-Yeol linked an issue Aug 30, 2023 that may be closed by this pull request

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 백트래킹 풀이같아요! 변수명이 직관적이어서 이해가 잘 됐습니다~!!!

@limstonestonelimstonestone left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

깔끔한 풀이 감사합니다 우열님!!

@zsmallazsmalla left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

재귀에서 매개변수가 복잡해지면 풀이가 비교적 단순해지고, 매개변수가 단순해지면 풀이가 비교적 복잡해지는 특성이 있는 것 같다는 걸 느꼈습니다. 둘 중 어떤 것이 맞고 틀리고가 아닌 본인이 편한 것을 선택하면 좋을 것 같아요. 고생하셨습니다!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

개인적으로 정렬된 리스트를 탐색하거나 순서가 정해진 경우의 백트래킹, 재귀에서는 매개변수를 통해 인덱스를 증가시키는 방향으로 재귀를 수행하는 것을 선호합니다. 그러면 별도의 방문 처리가 필요 없거든요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vowels: Set[str] = {'a', 'e', 'i', 'o', 'u'} 처럼 작성해도 좋을 것 같습니다. 저도 몰랐었는데 PEP8에서 리스트나 셋을 선언할 때 a=set() 이렇게 선언하는 것을 지양하더라구요! set() 이나 list() 키워드는 형변환 할 때에만 사용하고 선언 시에는 braket만 써도 좋을 것 같습니다!

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@zsmalla 오 꿀팁 감사합니다 지수님!

@Woo-Yeol
Woo-Yeol merged commit 8651dc8 into mainAug 30, 2023
@Woo-Yeol
Woo-Yeol deleted the wooyeol-#161 branch August 30, 2023 14:41
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOJ] 암호 만들기

4 participants

@Woo-Yeol@ksumini@zsmalla@limstonestone