Title: [Week 6] DICTIONARY self review - Yunhyunjo · Issue #184 · Queue-ri/Advanced-Algorithm-Study · GitHub
Open Graph Title: [Week 6] DICTIONARY self review - Yunhyunjo · Issue #184 · Queue-ri/Advanced-Algorithm-Study
X Title: [Week 6] DICTIONARY self review - Yunhyunjo · Issue #184 · Queue-ri/Advanced-Algorithm-Study
Description: DICTIONARY self review 1. 해결 시도 과정 위상정렬을 위해 indegree와 ch를 선언하여 저장하고 인접리스트를 만들어 정렬을 시도하였습니다. 2. 작성한 코드와 설명 while (c--) { string s, p; fill(indegree.begin(), indegree.end(), 0); fill(ch.begin(), ch.end(), 0); vector
Open Graph Description: DICTIONARY self review 1. 해결 시도 과정 위상정렬을 위해 indegree와 ch를 선언하여 저장하고 인접리스트를 만들어 정렬을 시도하였습니다. 2. 작성한 코드와 설명 while (c--) { string s, p; fill(indegree.begin(), indegree.end(), 0); fill(ch.begin(), ch.e...
X Description: DICTIONARY self review 1. 해결 시도 과정 위상정렬을 위해 indegree와 ch를 선언하여 저장하고 인접리스트를 만들어 정렬을 시도하였습니다. 2. 작성한 코드와 설명 while (c--) { string s, p; fill(indegree.begin(), indegree.end(), 0); fill(ch.begin(), ch.e...
Opengraph URL: https://github.com/Queue-ri/Advanced-Algorithm-Study/issues/184
X: @github
Domain: patch-diff.githubusercontent.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Week 6] DICTIONARY self review - Yunhyunjo","articleBody":"# DICTIONARY self review \r\n\r\n## 1. 해결 시도 과정\r\n위상정렬을 위해 indegree와 ch를 선언하여 저장하고 인접리스트를 만들어 정렬을 시도하였습니다.\r\n\r\n## 2. 작성한 코드와 설명\r\n```cpp\r\nwhile (c--) {\r\n\t\tstring s, p;\r\n\t\tfill(indegree.begin(), indegree.end(), 0);\r\n\t\tfill(ch.begin(), ch.end(), 0);\r\n\t\tvector \u003cvector \u003cint\u003e\u003e v(26);\r\n\t\tcin \u003e\u003e n \u003e\u003e s;\r\n\t\tp = s;\r\n\t\tch[p[0] - 97] = 1;\r\n\t\tfor (int i = 1; i \u003c n; i++) {\r\n\t\t\tcin \u003e\u003e s;\r\n\t\t\tif (p[0] != s[0]) {\r\n\t\t\t\tif (ch[s[0] - 97] == 0) ch[s[0] - 97] = 1;\r\n\t\t\t\tindegree[s[0] - 97]++;\r\n\t\t\t\tv[p[0] - 97].push_back(s[0] - 97);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tint pp = 1;\r\n\t\t\t\twhile (pp \u003c p.size() \u0026\u0026 pp \u003c s.size()) {\r\n\t\t\t\t\tif (p[pp] != s[pp]) {\r\n\t\t\t\t\t\tif (ch[p[pp] - 97] == 0) ch[p[pp] - 97] = 1;\r\n\t\t\t\t\t\tif (ch[s[pp] - 97] == 0) ch[s[pp] - 97] = 1;\r\n\t\t\t\t\t\tindegree[s[pp] - 97]++;\r\n\t\t\t\t\t\tv[p[pp] - 97].push_back(s[pp] - 97);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpp++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tp = s;\r\n\t\t}\r\n\t\tcout \u003c\u003c topologySort(v) \u003c\u003c endl;\r\n\t}\r\n```\r\n먼저 입력된 순서대로 비교하여 인접리스트를 만들고 indegree도 구해주었습니다. \r\n두 단어의 0번째 값이 같을 경우에는 다음 인덱스의 해당하는 문자를 비교해주었습니다. \r\n그렇게 구한 인접리스트를 topologySort함수에 매개변수로 넘겨주어 위상정렬을 해 출력해 주었습니다.\r\n\r\n```cpp\r\nstring topologySort(vector \u003cvector \u003cint\u003e\u003e\u0026 v) {\r\n\tstring s = \"\";\r\n\tqueue \u003cint\u003e q;\r\n\tfor (int i = 0; i \u003c 26; i++) {\r\n\t\tif (ch[i] == 1 \u0026\u0026 indegree[i] == 0) {\r\n\t\t\tq.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\twhile (!q.empty()) {\r\n\t\tint x = q.front();\r\n\t\tq.pop();\r\n\t\tchar c = x + 97;\r\n\t\ts += c;\r\n\t\tfor (int j = 0; j \u003c v[x].size(); j++) {\r\n\t\t\tif (v[x][0] == 50) return \"INVALID HYPOTHESIS\";\r\n\t\t\tif (--indegree[v[x][j]] == 0) q.push(v[x][j]);\r\n\t\t}\r\n\t\tv[x].clear();\r\n\t\tv[x].push_back(50);\r\n\t}\r\n\tif(s == \"\") return \"INVALID HYPOTHESIS\";\r\n\tfor (int i = 0; i \u003c 26; i++) {\r\n\t\tif (ch[i] == 0) {\r\n\t\t\tchar c = i + 97;\r\n\t\t\ts += c;\r\n\t\t}\r\n\t}\r\n\treturn s;\r\n}\r\n```\r\nqueue를 사용하여 일단 indegree값이 0인 값을 넣어주었습니다. 그 다음 bfs를 통해 위상정렬을 해 주었습니다.\r\n순환을 막기위해 이미 정렬에 사용한 정점 리스트는 clear해준 다음 값 50을 넣어주었고, for 문을 돌때 0번째 값이 50이면 이미 정렬에 사용한 정점으로 순환된 것 이므로 바로 INVALID HYPOTHESIS를 리턴해주었습니다.\r\n또 indegree가 0인 것이 없어 s가 비어있을 경우에도 순환이란 뜻이므로 INVALID HYPOTHESIS를 리턴해주었습니다.\r\n\r\n## 3. 막힌 점 및 개선 사항\r\n예제 입력은 정답이 제대로 나와서 정확히 어디서 틀린지를 모르겠습니다. 만약 똑같은 순서가 중복으로 나올 때 어차피 topologySort함수에서 걸러지므로 인접리스트 만들때 처리를 안해줬는데 처리하는 코드를 넣어줘야할 것 같습니다.","author":{"url":"https://github.com/Yunhyunjo","@type":"Person","name":"Yunhyunjo"},"datePublished":"2022-03-03T13:08:35.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/184/Advanced-Algorithm-Study/issues/184"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:d7161d8a-f449-47ec-61ad-64e83648d3e9 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 8FA4:68859:181BE0:1F7C6E:698FA360 |
| html-safe-nonce | 3afb6bae72c99bb8b9719996e806cb0edbdc82e5691b46fe55fd1af77300210e |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4RkE0OjY4ODU5OjE4MUJFMDoxRjdDNkU6Njk4RkEzNjAiLCJ2aXNpdG9yX2lkIjoiNDIwMTE3MTQ2NTQ5ODc2NDEyOCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 40860a1f9cd9132b716579d07451ccd5dcec85c3cdc55f8b2627d5d638a1aef1 |
| hovercard-subject-tag | issue:1158389421 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/Queue-ri/Advanced-Algorithm-Study/184/issue_layout |
| twitter:image | https://opengraph.githubassets.com/e06c6c09e16c0f69830e6fbd023faad5f9a2c9a91f643f07793e06886ed420ce/Queue-ri/Advanced-Algorithm-Study/issues/184 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/e06c6c09e16c0f69830e6fbd023faad5f9a2c9a91f643f07793e06886ed420ce/Queue-ri/Advanced-Algorithm-Study/issues/184 |
| og:image:alt | DICTIONARY self review 1. 해결 시도 과정 위상정렬을 위해 indegree와 ch를 선언하여 저장하고 인접리스트를 만들어 정렬을 시도하였습니다. 2. 작성한 코드와 설명 while (c--) { string s, p; fill(indegree.begin(), indegree.end(), 0); fill(ch.begin(), ch.e... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | Yunhyunjo |
| hostname | github.com |
| expected-hostname | github.com |
| None | ff0b5286b4f7cd2eb22d357a0ae8fb9a0ae1eaf6abfbae7410c3b315d16414e1 |
| turbo-cache-control | no-preview |
| go-import | github.com/Queue-ri/Advanced-Algorithm-Study git https://github.com/Queue-ri/Advanced-Algorithm-Study.git |
| octolytics-dimension-user_id | 77003554 |
| octolytics-dimension-user_login | Queue-ri |
| octolytics-dimension-repository_id | 327196656 |
| octolytics-dimension-repository_nwo | Queue-ri/Advanced-Algorithm-Study |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 327196656 |
| octolytics-dimension-repository_network_root_nwo | Queue-ri/Advanced-Algorithm-Study |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 17aba3d160d69b8c2b37695ebd174d8101af8896 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width