<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>string Archives - 어제와 내일의 나 그 사이의 이야기</title>
	<atom:link href="https://lycos7560.com/tag/string/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>생각의 흐름을 타고 다니며 만드는 블로그</description>
	<lastBuildDate>Fri, 15 Mar 2024 15:35:24 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://lycos7560.com/wp-content/uploads/2022/11/cropped-cropped-cropped-log-1-150x150-1-80x80.png</url>
	<title>string Archives - 어제와 내일의 나 그 사이의 이야기</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>백준 2711번 (오타맨 고창영, C++) [BAEKJOON]</title>
		<link>https://lycos7560.com/cpp/%eb%b0%b1%ec%a4%80-2711%eb%b2%88-%ec%98%a4%ed%83%80%eb%a7%a8-%ea%b3%a0%ec%b0%bd%ec%98%81-c-baekjoon/37858/</link>
					<comments>https://lycos7560.com/cpp/%eb%b0%b1%ec%a4%80-2711%eb%b2%88-%ec%98%a4%ed%83%80%eb%a7%a8-%ea%b3%a0%ec%b0%bd%ec%98%81-c-baekjoon/37858/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Thu, 22 Feb 2024 15:52:58 +0000</pubDate>
				<category><![CDATA[BaekjoonOnlineJudge]]></category>
		<category><![CDATA[C++/CPP]]></category>
		<category><![CDATA[2711]]></category>
		<category><![CDATA[2711번]]></category>
		<category><![CDATA[Baekjoon]]></category>
		<category><![CDATA[Bronze]]></category>
		<category><![CDATA[Bronze2]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[index]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[구현]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[문자열]]></category>
		<category><![CDATA[백준]]></category>
		<category><![CDATA[백준 2711]]></category>
		<category><![CDATA[백준 2711번]]></category>
		<category><![CDATA[브론즈2]]></category>
		<category><![CDATA[알고리즘]]></category>
		<category><![CDATA[오타맨 고창영]]></category>
		<category><![CDATA[코딩테스트]]></category>
		<category><![CDATA[코테]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=37858</guid>

					<description><![CDATA[<p>백준 2711번 '오타맨 고창영' 문제에 대한 글입니다. 단순한 구현 문제입니다. (This is about the issue of '오타맨 고창영' BaekJoon No. 2711. It's a simple implementation question.)</p>
<p>The post <a href="https://lycos7560.com/cpp/%eb%b0%b1%ec%a4%80-2711%eb%b2%88-%ec%98%a4%ed%83%80%eb%a7%a8-%ea%b3%a0%ec%b0%bd%ec%98%81-c-baekjoon/37858/">백준 2711번 (오타맨 고창영, C++) [BAEKJOON]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-5698326622209671"
     data-ad-slot="5078714126"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-75779d84      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차 테이블						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#오타맨-고창영" class="uagb-toc-link__trigger">오타맨 고창영</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#통과된-코드" class="uagb-toc-link__trigger">통과된 코드</a></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">오타맨 고창영 <img decoding="async" width="30" height="38" class="wp-image-37893" style="width: 30px;" src="https://lycos7560.com/wp-content/uploads/2024/02/Bronze_2.jpg" alt="" srcset="https://lycos7560.com/wp-content/uploads/2024/02/Bronze_2.jpg 1250w, https://lycos7560.com/wp-content/uploads/2024/02/Bronze_2-234x300.jpg 234w, https://lycos7560.com/wp-content/uploads/2024/02/Bronze_2-768x983.jpg 768w, https://lycos7560.com/wp-content/uploads/2024/02/Bronze_2-1200x1536.jpg 1200w" sizes="(max-width: 30px) 100vw, 30px" /></h1>



<p><a href="https://www.acmicpc.net/problem/2711" target="_blank" rel="noreferrer noopener">https://www.acmicpc.net/problem/2711</a></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">시간 제한</th><th class="has-text-align-left" data-align="left">메모리 제한</th><th class="has-text-align-left" data-align="left">제출</th><th class="has-text-align-left" data-align="left">정답</th><th class="has-text-align-left" data-align="left">맞힌 사람</th><th class="has-text-align-left" data-align="left">정답 비율</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">1 초</td><td class="has-text-align-left" data-align="left">128 MB</td><td class="has-text-align-left" data-align="left">9891</td><td class="has-text-align-left" data-align="left">6611</td><td class="has-text-align-left" data-align="left">5977</td><td class="has-text-align-left" data-align="left">68.599%</td></tr></tbody></table></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">문제</h3>



<p>고창영은 맨날 오타를 낸다. 창영이가 오타를 낸 문장과 오타를 낸 위치가 주어졌을 때, 오타를 지운 문자열을 출력하는 프로그램을 작성하시오.</p>



<p>창영이는 오타를 반드시 1개만 낸다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입력</h3>



<p>첫째 줄에 테스트 케이스의 개수 T(1&lt;=T&lt;=1,000)가 주어진다. </p>



<p>각 테스트 케이스는 한 줄로 구성되어 있다. 첫 숫자는 창영이가 오타를 낸 위치이고, 두 번째 문자열은 창영이가 친 문자열이다. </p>



<p>문자열의 가장 첫 문자는 1번째 문자이고, 문자열의 길이는 80을 넘지 않고, 대문자로만 이루어져 있다. </p>



<p>오타를 낸 위치는 문자열 길이보다 작거나 같다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">출력</h3>



<p>각 테스트 케이스에 대해 오타를 지운 문자열을 출력한다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading has-large-font-size">예제 입력 1</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">4
4 MISSPELL
1 PROGRAMMING
7 CONTEST
3 BALLOON</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading has-large-font-size">예제 출력 1</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">MISPELL
ROGRAMMING
CONTES
BALOON</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">출처</h3>



<p><a href="https://www.acmicpc.net/category/1" target="_blank" rel="noreferrer noopener">ICPC</a>&nbsp;&gt;&nbsp;<a href="https://www.acmicpc.net/category/7" target="_blank" rel="noreferrer noopener">Regionals</a>&nbsp;&gt;&nbsp;<a href="https://www.acmicpc.net/category/8" target="_blank" rel="noreferrer noopener">North America</a>&nbsp;&gt;&nbsp;<a href="https://www.acmicpc.net/category/9" target="_blank" rel="noreferrer noopener">Greater New York Region</a>&nbsp;&gt;&nbsp;<a href="https://www.acmicpc.net/category/detail/9" target="_blank" rel="noreferrer noopener">2007 Greater New York Programming Contest</a>&nbsp;A번</p>



<ul class="wp-block-list">
<li>문제를 번역한 사람:&nbsp;<a href="https://www.acmicpc.net/user/baekjoon" target="_blank" rel="noreferrer noopener">baekjoon</a></li>



<li>잘못된 데이터를 찾은 사람:&nbsp;<a href="https://www.acmicpc.net/user/occidere" target="_blank" rel="noreferrer noopener">occidere</a></li>
</ul>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">알고리즘 분류</h3>



<ul class="wp-block-list">
<li><a href="https://www.acmicpc.net/problem/tag/102" target="_blank" rel="noreferrer noopener">구현</a></li>



<li><a href="https://www.acmicpc.net/problem/tag/158" target="_blank" rel="noreferrer noopener">문자열</a></li>
</ul>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<p>단순한 구현 문제입니다. </p>



<p>특정 인덱스의 문자열을 어떤 방식으로 출력에서 제외할 것 인가를 구현하는 문제입니다.</p>



<p>아래의 코드는 주어진 문자열을 순회하면서 오타의 인덱스인지 확인 후 출력하는 코드입니다.</p>



<p> </p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading has-large-font-size">통과된 코드</h2>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;iostream>

using namespace std;

int main()
{
	int _TestCase, _TypingError;

	cin >> _TestCase;

	while (_TestCase--) 
	{
		string _Str;
		cin >> _TypingError >> _Str;
		int _l = _Str.length(); 
		_TypingError--;
		for (int i = 0; i &lt; _l; i++) 
		{
			if (i == _TypingError)
				continue;

			cout &lt;&lt; _Str[i];

		}

		cout &lt;&lt; '\n';
	}

	return 0;
}</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="967" height="84" src="https://lycos7560.com/wp-content/uploads/2024/02/image.png" alt="" class="wp-image-37859" srcset="https://lycos7560.com/wp-content/uploads/2024/02/image.png 967w, https://lycos7560.com/wp-content/uploads/2024/02/image-300x26.png 300w, https://lycos7560.com/wp-content/uploads/2024/02/image-768x67.png 768w" sizes="(max-width: 967px) 100vw, 967px" /></figure>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-5698326622209671"
     data-ad-slot="4386247858"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/cpp/%eb%b0%b1%ec%a4%80-2711%eb%b2%88-%ec%98%a4%ed%83%80%eb%a7%a8-%ea%b3%a0%ec%b0%bd%ec%98%81-c-baekjoon/37858/">백준 2711번 (오타맨 고창영, C++) [BAEKJOON]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/cpp/%eb%b0%b1%ec%a4%80-2711%eb%b2%88-%ec%98%a4%ed%83%80%eb%a7%a8-%ea%b3%a0%ec%b0%bd%ec%98%81-c-baekjoon/37858/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmers 72410 신규 아이디 추천 [2021 KAKAO BLIND RECRUITMENT]</title>
		<link>https://lycos7560.com/cpp/programmers/programmers-72410-%ec%8b%a0%ea%b7%9c-%ec%95%84%ec%9d%b4%eb%94%94-%ec%b6%94%ec%b2%9c-2021-kakao-blind-recruitment/34792/</link>
					<comments>https://lycos7560.com/cpp/programmers/programmers-72410-%ec%8b%a0%ea%b7%9c-%ec%95%84%ec%9d%b4%eb%94%94-%ec%b6%94%ec%b2%9c-2021-kakao-blind-recruitment/34792/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Sun, 14 May 2023 21:25:12 +0000</pubDate>
				<category><![CDATA[C++/CPP]]></category>
		<category><![CDATA[programmers]]></category>
		<category><![CDATA[[2021 KAKAO BLIND RECRUITMENT]]]></category>
		<category><![CDATA[<string>]]></category>
		<category><![CDATA[2021 KAKAO BLIND RECRUITMENT]]></category>
		<category><![CDATA[72410]]></category>
		<category><![CDATA[72410번]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[Programmers 72410]]></category>
		<category><![CDATA[Programmers 72410번]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[문자열]]></category>
		<category><![CDATA[신규 아이디 추천]]></category>
		<category><![CDATA[알고리즘]]></category>
		<category><![CDATA[코딩테스트]]></category>
		<category><![CDATA[코테]]></category>
		<category><![CDATA[파싱]]></category>
		<category><![CDATA[프로그래머스]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=34792</guid>

					<description><![CDATA[<p>Programmers 72410번 '신규 아이디 추천' 문제에 대한 글입니다. (This article is about the 'New ID Recommendation' problem in Programmers Number 72410) [2021 KAKAO BLIND RECRUITMENT]</p>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-72410-%ec%8b%a0%ea%b7%9c-%ec%95%84%ec%9d%b4%eb%94%94-%ec%b6%94%ec%b2%9c-2021-kakao-blind-recruitment/34792/">Programmers 72410 신규 아이디 추천 [2021 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<!-- HorizontalAD -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5698326622209671" data-ad-slot="6908948342" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-8d2b0414      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차 테이블						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#신규-아이디-추천" class="uagb-toc-link__trigger">신규 아이디 추천</a><li class="uagb-toc__list"><a href="#통과된-코드" class="uagb-toc-link__trigger">통과된 코드</a><li class="uagb-toc__list"><a href="#더-효율적인-코드" class="uagb-toc-link__trigger">더 효율적인 코드</a></ol>					</div>
									</div>
				</div>
			


<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">신규 아이디 추천</h1>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size"><a href="https://school.programmers.co.kr/learn/courses/30/lessons/72410" target="_blank" rel="noreferrer noopener">https://school.programmers.co.kr/learn/courses/30/lessons/72410</a></p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">카카오에 입사한 신입 개발자 <code>네오</code>는 &#8220;카카오계정개발팀&#8221;에 배치되어, </p>



<p class="has-medium-font-size">카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. </p>



<p class="has-medium-font-size">&#8220;네오&#8221;에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, </p>



<p class="has-medium-font-size">입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다.</p>



<p class="has-medium-font-size">다음은 카카오 아이디의 규칙입니다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li>아이디의 길이는 3자 이상 15자 이하여야 합니다.</li>



<li>아이디는 알파벳 소문자, 숫자, 빼기(<code>-</code>), 밑줄(<code>_</code>), 마침표(<code>.</code>) 문자만 사용할 수 있습니다.</li>



<li>단, 마침표(<code>.</code>)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다.</li>
</ul>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">&#8220;네오&#8221;는 다음과 같이 7단계의 순차적인 처리 과정을 통해 </p>



<p class="has-medium-font-size">신규 유저가 입력한 아이디가 카카오 아이디 규칙에 맞는 지 검사하고 규칙에 맞지 않은 경우 </p>



<p class="has-medium-font-size">규칙에 맞는 새로운 아이디를 추천해 주려고 합니다.</p>



<p class="has-medium-font-size">신규 유저가 입력한 아이디가 <code>new_id</code> 라고 한다면,</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다.
2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다.
3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다.
6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다.
     만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다.
7단계 new_id의 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">예를 들어, new_id 값이 &#8220;&#8230;!@BaT#*..y.abcdefghijklm&#8221; 라면, </p>



<p class="has-medium-font-size">위 7단계를 거치고 나면 new_id는 아래와 같이 변경됩니다.</p>



<p class="has-medium-font-size">1단계 대문자 &#8216;B&#8217;와 &#8216;T&#8217;가 소문자 &#8216;b&#8217;와 &#8216;t&#8217;로 바뀌었습니다.<br><code>"...!@BaT#*..y.abcdefghijklm"</code>&nbsp;→&nbsp;<code>"...!@bat#*..y.abcdefghijklm"</code></p>



<p class="has-medium-font-size">2단계 &#8216;!&#8217;, &#8216;@&#8217;, &#8216;#&#8217;, &#8216;*&#8217; 문자가 제거되었습니다.<br><code>"...!@bat#*..y.abcdefghijklm"</code>&nbsp;→&nbsp;<code>"...bat..y.abcdefghijklm"</code></p>



<p class="has-medium-font-size">3단계 &#8216;&#8230;&#8217;와 &#8216;..&#8217; 가 &#8216;.&#8217;로 바뀌었습니다.<br><code>"...bat..y.abcdefghijklm"</code>&nbsp;→&nbsp;<code>".bat.y.abcdefghijklm"</code></p>



<p class="has-medium-font-size">4단계 아이디의 처음에 위치한 &#8216;.&#8217;가 제거되었습니다.<br><code>".bat.y.abcdefghijklm"</code>&nbsp;→&nbsp;<code>"bat.y.abcdefghijklm"</code></p>



<p class="has-medium-font-size">5단계 아이디가 빈 문자열이 아니므로 변화가 없습니다.<br><code>"bat.y.abcdefghijklm"</code>&nbsp;→&nbsp;<code>"bat.y.abcdefghijklm"</code></p>



<p class="has-medium-font-size">6단계 아이디의 길이가 16자 이상이므로, 처음 15자를 제외한 나머지 문자들이 제거되었습니다.<br><code>"bat.y.abcdefghijklm"</code>&nbsp;→&nbsp;<code>"bat.y.abcdefghi"</code></p>



<p class="has-medium-font-size">7단계 아이디의 길이가 2자 이하가 아니므로 변화가 없습니다.<br><code>"bat.y.abcdefghi"</code>&nbsp;→&nbsp;<code>"bat.y.abcdefghi"</code></p>



<p class="has-medium-font-size">따라서 신규 유저가 입력한 new_id가 &#8220;&#8230;!@BaT#*..y.abcdefghijklm&#8221;일 때, </p>



<p class="has-medium-font-size">네오의 프로그램이 추천하는 새로운 아이디는 &#8220;bat.y.abcdefghi&#8221; 입니다.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>[문제]</strong></h2>



<p class="has-medium-font-size">신규 유저가 입력한 아이디를 나타내는 new_id가 매개변수로 주어질 때, </p>



<p class="has-medium-font-size">&#8220;네오&#8221;가 설계한 7단계의 처리 과정을 거친 후의 추천 아이디를 return 하도록 solution 함수를 완성해 주세요.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>[제한사항]</strong></h2>



<p class="has-medium-font-size">new_id는 길이 1 이상 1,000 이하인 문자열입니다.</p>



<p class="has-medium-font-size">new_id는 알파벳 대문자, 알파벳 소문자, 숫자, 특수문자로 구성되어 있습니다.</p>



<p class="has-medium-font-size">new_id에 나타날 수 있는 특수문자는 <code>-_.~!@#$%^&amp;*()=+[{]}:?,&lt;>/</code> 로 한정됩니다.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>[입출력 예]</strong></h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">no</th><th class="has-text-align-left" data-align="left">new_id</th><th class="has-text-align-left" data-align="left">result</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">예1</td><td class="has-text-align-left" data-align="left"><code>"...!@BaT#*..y.abcdefghijklm"</code></td><td class="has-text-align-left" data-align="left"><code>"bat.y.abcdefghi"</code></td></tr><tr><td class="has-text-align-left" data-align="left">예2</td><td class="has-text-align-left" data-align="left"><code>"z-+.^."</code></td><td class="has-text-align-left" data-align="left"><code>"z--"</code></td></tr><tr><td class="has-text-align-left" data-align="left">예3</td><td class="has-text-align-left" data-align="left"><code>"=.="</code></td><td class="has-text-align-left" data-align="left"><code>"aaa"</code></td></tr><tr><td class="has-text-align-left" data-align="left">예4</td><td class="has-text-align-left" data-align="left"><code>"123_.def"</code></td><td class="has-text-align-left" data-align="left"><code>"123_.def"</code></td></tr><tr><td class="has-text-align-left" data-align="left">예5</td><td class="has-text-align-left" data-align="left"><code>"abcdefghijklmn.p"</code></td><td class="has-text-align-left" data-align="left"><code>"abcdefghijklmn"</code></td></tr></tbody></table></figure>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>입출력 예에 대한 설명</strong></h2>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="has-medium-font-size"><strong>입출력 예 #1</strong></p>



<p class="has-medium-font-size">문제의 예시와 같습니다.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size"><strong>입출력 예 #2</strong></p>



<p class="has-medium-font-size">7단계를 거치는 동안 new_id가 변화하는 과정은 아래와 같습니다.</p>



<p class="has-medium-font-size">1단계 변화 없습니다.<br>2단계&nbsp;<code>"z-+.^."</code>&nbsp;→&nbsp;<code>"z-.."</code><br>3단계&nbsp;<code>"z-.."</code>&nbsp;→&nbsp;<code>"z-."</code><br>4단계&nbsp;<code>"z-."</code>&nbsp;→&nbsp;<code>"z-"</code><br>5단계 변화 없습니다.<br>6단계 변화 없습니다.<br>7단계&nbsp;<code>"z-"</code>&nbsp;→&nbsp;<code>"z--"</code></p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size"><strong>입출력 예 #3</strong></p>



<p class="has-medium-font-size">7단계를 거치는 동안 new_id가 변화하는 과정은 아래와 같습니다.</p>



<p class="has-medium-font-size">1단계 변화 없습니다.<br>2단계&nbsp;<code>"=.="</code>&nbsp;→&nbsp;<code>"."</code><br>3단계 변화 없습니다.<br>4단계&nbsp;<code>"."</code>&nbsp;→&nbsp;<code>""</code>&nbsp;(new_id가 빈 문자열이 되었습니다.)<br>5단계&nbsp;<code>""</code>&nbsp;→&nbsp;<code>"a"</code><br>6단계 변화 없습니다.<br>7단계&nbsp;<code>"a"</code>&nbsp;→&nbsp;<code>"aaa"</code></p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size"><strong>입출력 예 #4</strong></p>



<p class="has-medium-font-size">1단계에서 7단계까지 거치는 동안 new_id(&#8220;123_.def&#8221;)는 변하지 않습니다. </p>



<p class="has-medium-font-size">즉, new_id가 처음부터 카카오의 아이디 규칙에 맞습니다.</p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size"><strong>입출력 예 #5</strong></p>



<p class="has-medium-font-size">1단계 변화 없습니다.<br>2단계 변화 없습니다.<br>3단계 변화 없습니다.<br>4단계 변화 없습니다.<br>5단계 변화 없습니다.<br>6단계 <code>"abcdefghijklmn.p"</code> → <code>"abcdefghijklmn."</code> → <code>"abcdefghijklmn"</code><br>7단계 변화 없습니다.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h1 class="wp-block-heading">통과된 코드</h1>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;string>
#include &lt;vector>
#include &lt;iostream>

using namespace std;

string solution(string new_id) {

    string answer = "";

	// 1단계
	for (int i = 0; i &lt; new_id.length(); i++) {
		if (new_id[i] >= 65 &amp;&amp; new_id[i] &lt;= 90)
			new_id[i] += 32;
	}

	// 2단계
	for (int i = 0; i &lt; new_id.length(); i++) {
		if ((new_id[i] >= 97 &amp;&amp; new_id[i] &lt;= 122) || new_id[i] == '-' || new_id[i] == '_' 
			|| new_id[i] == '.' || (new_id[i] >= 48 &amp;&amp; new_id[i] &lt;= 57))
			answer.push_back(new_id[i]);	
	}

	// 3단계
	new_id = answer;
	answer = "";
	bool check = false;
	for (int i = 0; i &lt; new_id.length(); i++) {
		if (new_id[i] == '.') {
			if (check) continue;
			answer.push_back(new_id[i]);
			check = true;
			continue;
		}
		answer.push_back(new_id[i]);
		check = false;
	}

	//4단계
	while (true) {
		if (answer[0] == '.')  {
			answer.erase(answer.begin());
			continue;
		}
		if (answer[answer.length() - 1] == '.') {
			answer.erase(answer.begin() + answer.length() - 1);
			continue;
		}
		break;
	}

	// 5단계
	if (answer.length() == 0) answer.push_back('a');
	
	// 6단계
	if (answer.length() >= 16) {
		answer = answer.substr(0, 15);
		while (true) {
			if (answer[answer.length() - 1] == '.') {
				answer.erase(answer.begin() + answer.length() - 1);
				continue;
			}
			break;
		}
	}

	// 7단계
	while (answer.length() &lt; 3) {
		answer.push_back(answer[answer.length() - 1]);
	}

    return answer;
}</pre>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="414" height="698" src="https://lycos7560.com/wp-content/uploads/2023/05/image-84.png" alt="" class="wp-image-34799" srcset="https://lycos7560.com/wp-content/uploads/2023/05/image-84.png 414w, https://lycos7560.com/wp-content/uploads/2023/05/image-84-178x300.png 178w" sizes="(max-width: 414px) 100vw, 414px" /></figure>



<div style="height:150px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">더 효율적인 코드</h1>



<p class="has-medium-font-size"><a href="https://school.programmers.co.kr/learn/courses/30/lessons/72410/solution_groups?language=cpp" target="_blank" rel="noreferrer noopener">https://school.programmers.co.kr/learn/courses/30/lessons/72410/solution_groups?language=cpp</a></p>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;bits/stdc++.h>
using namespace std;

string solution(string new_id) {
    for (char&amp; ch : new_id) if ('A' &lt;= ch &amp;&amp; ch &lt;= 'Z') ch |= 32;

    string ret;
    for (char&amp; ch: new_id) {
        if ('a' &lt;= ch &amp;&amp; ch &lt;= 'z' ||
            '0' &lt;= ch &amp;&amp; ch &lt;= '9' ||
            strchr("-_.", ch)) ret += ch;
    }

    new_id = ret;
    ret.clear();
    for (char&amp; ch: new_id) {
        if (!ret.empty() &amp;&amp; ret.back() == '.' &amp;&amp; ch == '.') continue;
        ret += ch;
    }

    if (ret.front() == '.') ret.erase(ret.begin());
    if (ret.back() == '.') ret.pop_back();

    if (ret.empty()) ret = "a";
    if (ret.size() >= 16) ret = ret.substr(0, 15);
    if (ret.back() == '.') ret.pop_back();
    while (ret.size() &lt;= 2) ret += ret.back();

    return ret;
}</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="399" height="711" src="https://lycos7560.com/wp-content/uploads/2023/05/image-85.png" alt="" class="wp-image-34802" srcset="https://lycos7560.com/wp-content/uploads/2023/05/image-85.png 399w, https://lycos7560.com/wp-content/uploads/2023/05/image-85-168x300.png 168w" sizes="(max-width: 399px) 100vw, 399px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5698326622209671" data-ad-slot="4245812909"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-72410-%ec%8b%a0%ea%b7%9c-%ec%95%84%ec%9d%b4%eb%94%94-%ec%b6%94%ec%b2%9c-2021-kakao-blind-recruitment/34792/">Programmers 72410 신규 아이디 추천 [2021 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/cpp/programmers/programmers-72410-%ec%8b%a0%ea%b7%9c-%ec%95%84%ec%9d%b4%eb%94%94-%ec%b6%94%ec%b2%9c-2021-kakao-blind-recruitment/34792/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>백준 21955번 (Split, C++) [BAEKJOON]</title>
		<link>https://lycos7560.com/cpp/baekjoon_online_judge/%eb%b0%b1%ec%a4%80-21955%eb%b2%88-split-c-baekjoon/35097/</link>
					<comments>https://lycos7560.com/cpp/baekjoon_online_judge/%eb%b0%b1%ec%a4%80-21955%eb%b2%88-split-c-baekjoon/35097/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Mon, 24 Apr 2023 02:25:40 +0000</pubDate>
				<category><![CDATA[BaekjoonOnlineJudge]]></category>
		<category><![CDATA[C++/CPP]]></category>
		<category><![CDATA[21955]]></category>
		<category><![CDATA[21955번]]></category>
		<category><![CDATA[Baekjoon]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[Split]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[문자열]]></category>
		<category><![CDATA[백준]]></category>
		<category><![CDATA[백준 21955]]></category>
		<category><![CDATA[백준 21955번]]></category>
		<category><![CDATA[알고리즘]]></category>
		<category><![CDATA[코딩테스트]]></category>
		<category><![CDATA[코테]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=35097</guid>

					<description><![CDATA[<p>백준 21955번 'Split' 문제에 대한 글입니다. 단순한 문자열 Split 연습 문제 입니다. (This article is about the question of "Split" in Baekjoon Number 21955. This is a simple string Split exercise problem.)</p>
<p>The post <a href="https://lycos7560.com/cpp/baekjoon_online_judge/%eb%b0%b1%ec%a4%80-21955%eb%b2%88-split-c-baekjoon/35097/">백준 21955번 (Split, C++) [BAEKJOON]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<!-- HorizontalAD -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5698326622209671" data-ad-slot="6908948342" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-6282763f      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차 테이블						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#split" class="uagb-toc-link__trigger">Split</a><li class="uagb-toc__list"><a href="#통과된-코드" class="uagb-toc-link__trigger">통과된 코드</a></ol>					</div>
									</div>
				</div>
			


<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">Split</h1>



<p class="has-medium-font-size"><a href="https://www.acmicpc.net/problem/21955" target="_blank" rel="noreferrer noopener">https://www.acmicpc.net/problem/21955</a></p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">시간 제한</th><th class="has-text-align-left" data-align="left">메모리 제한</th><th class="has-text-align-left" data-align="left">제출</th><th class="has-text-align-left" data-align="left">정답</th><th class="has-text-align-left" data-align="left">맞힌 사람</th><th class="has-text-align-left" data-align="left">정답 비율</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">1 초</td><td class="has-text-align-left" data-align="left">512 MB</td><td class="has-text-align-left" data-align="left">147</td><td class="has-text-align-left" data-align="left">135</td><td class="has-text-align-left" data-align="left">122</td><td class="has-text-align-left" data-align="left">92.424%</td></tr></tbody></table></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">문제</h2>



<p class="has-medium-font-size">In order to teach Mihai to write figures neatly, his teacher gave him for homework to write several numbers.</p>



<p class="has-medium-font-size">Because he was rushing to finish his homework as quick as possible so that he can play on the computer, </p>



<p class="has-medium-font-size">he wrote the numbers so close that some of them were attached.</p>



<p class="has-medium-font-size">When his mother looked on Mihai’s notebook, she noticed this thing and she thought of a challenge for the little boy. </p>



<p class="has-medium-font-size">She writes a number with an even number of digits and Mihai should split this number in two equal parts and should write the two numbers which are formed after this move.</p>



<p class="has-medium-font-size">This thing will help Mihai learn how to write numbers neatly in a funny way.</p>



<p class="has-medium-font-size">Help Mihai find two numbers which form the number said by his mother, if we attach the second number at the end of the first one.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">입력</h2>



<p class="has-medium-font-size">The first line of the input contains only one integer, N&nbsp;– the number told by Mihai’s mother.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">출력</h2>



<p class="has-medium-font-size">The output contains two integers separated by space, the numbers which form the number told by Mihai’s mother.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">제한</h2>



<ul class="wp-block-list">
<li>1 ≤ N ≤ 10<sup>18</sup>.</li>



<li>N has even number of digits.</li>



<li>All digits are different from 0.</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">예제 입력 1</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">2341</pre>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">예제 출력 1</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">23 41</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">예제 입력 2</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">238445</pre>



<div style="height:31px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">예제 출력 2</h2>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">238 445</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">출처</h2>



<p><a href="https://www.acmicpc.net/category/45" target="_blank" rel="noreferrer noopener">Contest</a>&nbsp;&gt;&nbsp;<a href="https://www.acmicpc.net/category/532" target="_blank" rel="noreferrer noopener">&nbsp;infO(1) Cup</a>&nbsp;&gt;&nbsp;<a href="https://www.acmicpc.net/category/detail/2570">infO(1) Cup 2019 N</a><a href="https://www.acmicpc.net/category/detail/2570" target="_blank" rel="noreferrer noopener">a</a><a href="https://www.acmicpc.net/category/detail/2570">tional Round</a>&nbsp;1번</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">알고리즘 분류</h2>



<ul class="wp-block-list">
<li><a href="https://www.acmicpc.net/problem/tag/158" target="_blank" rel="noreferrer noopener">문자열</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h1 class="wp-block-heading">통과된 코드</h1>



<p class="has-medium-font-size">이 문제가 브론즈2 ???</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;iostream>
#include &lt;string>
using namespace std;
string str;
int main()
{
	cin >> str;
	int _Pivot = str.length() * 0.5f;
	cout &lt;&lt; str.substr(0, _Pivot) &lt;&lt; " " &lt;&lt; str.substr(_Pivot, str.length());
	return 0;
}</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1208" height="99" src="https://lycos7560.com/wp-content/uploads/2023/05/image-148.png" alt="" class="wp-image-35099" srcset="https://lycos7560.com/wp-content/uploads/2023/05/image-148.png 1208w, https://lycos7560.com/wp-content/uploads/2023/05/image-148-300x25.png 300w, https://lycos7560.com/wp-content/uploads/2023/05/image-148-768x63.png 768w" sizes="(max-width: 1208px) 100vw, 1208px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5698326622209671" data-ad-slot="4245812909"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/cpp/baekjoon_online_judge/%eb%b0%b1%ec%a4%80-21955%eb%b2%88-split-c-baekjoon/35097/">백준 21955번 (Split, C++) [BAEKJOON]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/cpp/baekjoon_online_judge/%eb%b0%b1%ec%a4%80-21955%eb%b2%88-split-c-baekjoon/35097/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmers 60057 문자열 압축 [2020 KAKAO BLIND RECRUITMENT]</title>
		<link>https://lycos7560.com/cpp/programmers/programmers-60057-%eb%ac%b8%ec%9e%90%ec%97%b4-%ec%95%95%ec%b6%95-2020-kakao-blind-recruitment/34347/</link>
					<comments>https://lycos7560.com/cpp/programmers/programmers-60057-%eb%ac%b8%ec%9e%90%ec%97%b4-%ec%95%95%ec%b6%95-2020-kakao-blind-recruitment/34347/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Thu, 20 Apr 2023 02:36:22 +0000</pubDate>
				<category><![CDATA[C++/CPP]]></category>
		<category><![CDATA[programmers]]></category>
		<category><![CDATA[[2020 KAKAO BLIND RECRUITMENT]]]></category>
		<category><![CDATA[<string>]]></category>
		<category><![CDATA[2020 KAKAO BLIND RECRUITMENT]]></category>
		<category><![CDATA[60057]]></category>
		<category><![CDATA[60057번]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[Programmers 60057]]></category>
		<category><![CDATA[Programmers 60057 문자열 압축]]></category>
		<category><![CDATA[Programmers 60057번]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기본]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[문자열 압축]]></category>
		<category><![CDATA[알고리즘]]></category>
		<category><![CDATA[코딩테스트]]></category>
		<category><![CDATA[코테]]></category>
		<category><![CDATA[프로그래머스]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=34347</guid>

					<description><![CDATA[<p>Programmers 60057번 '문자열 압축' 문제에 대한 글입니다. (This article is about the 'string compression' problem in Programmers 60057. [2020 KAKAO BLIND RECRUITMENT])</p>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-60057-%eb%ac%b8%ec%9e%90%ec%97%b4-%ec%95%95%ec%b6%95-2020-kakao-blind-recruitment/34347/">Programmers 60057 문자열 압축 [2020 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<!-- HorizontalAD -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5698326622209671" data-ad-slot="6908948342" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-54756f60      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차 테이블						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#문자열-압축" class="uagb-toc-link__trigger">문자열 압축</a><li class="uagb-toc__list"><a href="#통과된-코드" class="uagb-toc-link__trigger">통과된 코드</a></ol>					</div>
									</div>
				</div>
			


<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">문자열 압축</h1>



<p class="has-medium-font-size"><a href="https://school.programmers.co.kr/learn/courses/30/lessons/60057" target="_blank" rel="noreferrer noopener">https://school.programmers.co.kr/learn/courses/30/lessons/60057</a></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">데이터 처리 전문가가 되고 싶은&nbsp;<strong>&#8220;어피치&#8221;</strong>는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. </p>



<p class="has-medium-font-size">최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, </p>



<p class="has-medium-font-size">문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 </p>



<p class="has-medium-font-size">더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다.</p>



<p class="has-medium-font-size">간단한 예로 &#8220;aabbaccc&#8221;의 경우 &#8220;2a2ba3c&#8221;(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, </p>



<p class="has-medium-font-size">이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. </p>



<p class="has-medium-font-size">예를 들면, &#8220;abcabcdede&#8221;와 같은 문자열은 전혀 압축되지 않습니다. </p>



<p class="has-medium-font-size">&#8220;어피치&#8221;는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘라서 압축하여 </p>



<p class="has-medium-font-size">더 짧은 문자열로 표현할 수 있는지 방법을 찾아보려고 합니다.</p>



<p class="has-medium-font-size">예를 들어, &#8220;ababcdcdababcdcd&#8221;의 경우 문자를 1개 단위로 자르면 전혀 압축되지 않지만,</p>



<p class="has-medium-font-size"> 2개 단위로 잘라서 압축한다면 &#8220;2ab2cd2ab2cd&#8221;로 표현할 수 있습니다. </p>



<p class="has-medium-font-size">다른 방법으로 8개 단위로 잘라서 압축한다면 &#8220;2ababcdcd&#8221;로 표현할 수 있으며, </p>



<p class="has-medium-font-size">이때가 가장 짧게 압축하여 표현할 수 있는 방법입니다.</p>



<p class="has-medium-font-size">다른 예로, &#8220;abcabcdede&#8221;와 같은 경우, 문자를 2개 단위로 잘라서 압축하면 &#8220;abcabc2de&#8221;가 되지만, </p>



<p class="has-medium-font-size">3개 단위로 자른다면 &#8220;2abcdede&#8221;가 되어 3개 단위가 가장 짧은 압축 방법이 됩니다. </p>



<p class="has-medium-font-size">이때 3개 단위로 자르고 마지막에 남는 문자열은 그대로 붙여주면 됩니다.</p>



<p class="has-medium-font-size">압축할 문자열 s가 매개변수로 주어질 때, </p>



<p class="has-medium-font-size">위에 설명한 방법으로 1개 이상 단위로 문자열을 잘라 압축하여 </p>



<p class="has-medium-font-size">표현한 문자열 중 가장 짧은 것의 길이를 return 하도록 solution 함수를 완성해주세요.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">제한사항</h3>



<p class="has-medium-font-size">s의 길이는 1 이상 1,000 이하입니다.</p>



<p class="has-medium-font-size">s는 알파벳 소문자로만 이루어져 있습니다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입출력 예</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">s</th><th class="has-text-align-left" data-align="left">result</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left"><code>"aabbaccc"</code></td><td class="has-text-align-left" data-align="left">7</td></tr><tr><td class="has-text-align-left" data-align="left"><code>"ababcdcdababcdcd"</code></td><td class="has-text-align-left" data-align="left">9</td></tr><tr><td class="has-text-align-left" data-align="left"><code>"abcabcdede"</code></td><td class="has-text-align-left" data-align="left">8</td></tr><tr><td class="has-text-align-left" data-align="left"><code>"abcabcabcabcdededededede"</code></td><td class="has-text-align-left" data-align="left">14</td></tr><tr><td class="has-text-align-left" data-align="left"><code>"xababcdcdababcdcd"</code></td><td class="has-text-align-left" data-align="left">17</td></tr></tbody></table></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입출력 예에 대한 설명</h3>



<p class="has-medium-font-size"><strong>입출력 예 #1</strong></p>



<p>문자열을 1개 단위로 잘라 압축했을 때 가장 짧습니다.</p>



<p class="has-medium-font-size"><strong>입출력 예 #2</strong></p>



<p>문자열을 8개 단위로 잘라 압축했을 때 가장 짧습니다.</p>



<p class="has-medium-font-size"><strong>입출력 예 #3</strong></p>



<p>문자열을 3개 단위로 잘라 압축했을 때 가장 짧습니다.</p>



<p class="has-medium-font-size"><strong>입출력 예 #4</strong></p>



<p>문자열을 2개 단위로 자르면 &#8220;abcabcabcabc6de&#8221; 가 됩니다.<br>문자열을 3개 단위로 자르면 &#8220;4abcdededededede&#8221; 가 됩니다.<br>문자열을 4개 단위로 자르면 &#8220;abcabcabcabc3dede&#8221; 가 됩니다.<br>문자열을 6개 단위로 자를 경우 &#8220;2abcabc2dedede&#8221;가 되며, 이때의 길이가 14로 가장 짧습니다.</p>



<p class="has-medium-font-size"><strong>입출력 예 #5</strong></p>



<p>문자열은 제일 앞부터 정해진 길이만큼 잘라야 합니다.<br>따라서 주어진 문자열을 x / ababcdcd / ababcdcd 로 자르는 것은 불가능 합니다.<br>이 경우 어떻게 문자열을 잘라도 압축되지 않으므로 가장 짧은 길이는 17이 됩니다.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h1 class="wp-block-heading">통과된 코드</h1>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;vector>
#include &lt;string>
using namespace std;
int solution(string s)
{
	if (s.length() == 1) return 1; // 길이 '1' 예외 처리
	int answer = INT32_MAX;
	for (int i = 1; i &lt;= s.length() / 2; i++) {
		vector&lt;string> _ResV;
		int _AnsT = 0;
		for (int j = 0; ; j += i) {
			if (j + i > s.length()) {
				_AnsT = s.length() - j;
				break;
			}
			string _Temp = s.substr(j, i);
			_ResV.push_back(_Temp);
		}
		string _DupStr = "";
		int _DupInt = 1;
		for (int i = 0; i &lt; _ResV.size(); i++) {
			if (_ResV[i] == _DupStr) _DupInt++;	
			else {
				_AnsT += _DupStr.size();
				if (_DupInt > 1) _AnsT += to_string(_DupInt).length();
				_DupStr = _ResV[i];
				_DupInt = 1;
			}
		}
		_AnsT += _DupStr.size();
		if (_DupInt > 1) _AnsT += to_string(_DupInt).length();
		answer = min(answer, _AnsT);
	}

	return answer;
}</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="656" height="736" src="https://lycos7560.com/wp-content/uploads/2023/04/image-16.png" alt="" class="wp-image-34350" srcset="https://lycos7560.com/wp-content/uploads/2023/04/image-16.png 656w, https://lycos7560.com/wp-content/uploads/2023/04/image-16-267x300.png 267w" sizes="(max-width: 656px) 100vw, 656px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5698326622209671" data-ad-slot="4245812909"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-60057-%eb%ac%b8%ec%9e%90%ec%97%b4-%ec%95%95%ec%b6%95-2020-kakao-blind-recruitment/34347/">Programmers 60057 문자열 압축 [2020 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/cpp/programmers/programmers-60057-%eb%ac%b8%ec%9e%90%ec%97%b4-%ec%95%95%ec%b6%95-2020-kakao-blind-recruitment/34347/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmers 42888 오픈채팅방 [2019 KAKAO BLIND RECRUITMENT]</title>
		<link>https://lycos7560.com/cpp/programmers/programmers-42888-%ec%98%a4%ed%94%88%ec%b1%84%ed%8c%85%eb%b0%a9-2019-kakao-blind-recruitment/34142/</link>
					<comments>https://lycos7560.com/cpp/programmers/programmers-42888-%ec%98%a4%ed%94%88%ec%b1%84%ed%8c%85%eb%b0%a9-2019-kakao-blind-recruitment/34142/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Mon, 20 Mar 2023 05:18:02 +0000</pubDate>
				<category><![CDATA[C++/CPP]]></category>
		<category><![CDATA[programmers]]></category>
		<category><![CDATA[[2019 KAKAO BLIND RECRUITMENT]]]></category>
		<category><![CDATA[2019 KAKAO BLIND RECRUITMENT]]></category>
		<category><![CDATA[42888]]></category>
		<category><![CDATA[42888번]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[Programmers 42888]]></category>
		<category><![CDATA[Programmers 42888번]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기본]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[문자열]]></category>
		<category><![CDATA[알고리즘]]></category>
		<category><![CDATA[오픈채팅방]]></category>
		<category><![CDATA[코딩테스트]]></category>
		<category><![CDATA[코테]]></category>
		<category><![CDATA[파싱]]></category>
		<category><![CDATA[파싱(parsing)]]></category>
		<category><![CDATA[프로그래머스]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=34142</guid>

					<description><![CDATA[<p>Programmers 42888번 '오픈채팅방' 문제에 대한 글입니다. [2019 KAKAO BLIND RECRUITMENT] (This article is about the 'Open Chat Room' problem in Programmers 42888. [2019 KAKAO BLIND RECRUITMENT])</p>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-42888-%ec%98%a4%ed%94%88%ec%b1%84%ed%8c%85%eb%b0%a9-2019-kakao-blind-recruitment/34142/">Programmers 42888 오픈채팅방 [2019 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<!-- HorizontalAD -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5698326622209671" data-ad-slot="6908948342" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-711c0f90      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차 테이블						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#오픈채팅방" class="uagb-toc-link__trigger">오픈채팅방</a><li class="uagb-toc__list"><a href="#통과된-코드" class="uagb-toc-link__trigger">통과된 코드</a><li class="uagb-toc__list"><a href="#더-효율적인-코드" class="uagb-toc-link__trigger">더 효율적인 코드</a></ol>					</div>
									</div>
				</div>
			


<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">오픈채팅방</h1>



<p class="has-medium-font-size"><a href="https://school.programmers.co.kr/learn/courses/30/lessons/42888" target="_blank" rel="noreferrer noopener">https://school.programmers.co.kr/learn/courses/30/lessons/42888</a></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, </p>



<p class="has-medium-font-size">본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다.</p>



<p class="has-medium-font-size">신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, </p>



<p class="has-medium-font-size">나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. </p>



<p class="has-medium-font-size">채팅방에 누군가 들어오면 다음 메시지가 출력된다.</p>



<p class="has-medium-font-size">&#8220;[닉네임]님이 들어왔습니다.&#8221;</p>



<p class="has-medium-font-size">채팅방에서 누군가 나가면 다음 메시지가 출력된다.</p>



<p class="has-medium-font-size">&#8220;[닉네임]님이 나갔습니다.&#8221;</p>



<p class="has-medium-font-size">채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다.<br>채팅방에서 닉네임을 변경한다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다.</p>



<p class="has-medium-font-size">예를 들어, 채팅방에 &#8220;Muzi&#8221;와 &#8220;Prodo&#8221;라는 닉네임을 사용하는 사람이 순서대로 들어오면 </p>



<p class="has-medium-font-size">채팅방에는 다음과 같이 메시지가 출력된다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>&#8220;Muzi님이 들어왔습니다.&#8221;<br>&#8220;Prodo님이 들어왔습니다.&#8221;</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">채팅방에 있던 사람이 나가면 채팅방에는 다음과 같이 메시지가 남는다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>&#8220;Muzi님이 들어왔습니다.&#8221;<br>&#8220;Prodo님이 들어왔습니다.&#8221;<br>&#8220;Muzi님이 나갔습니다.&#8221;</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">Muzi가 나간후 다시 들어올 때, Prodo 라는 닉네임으로 들어올 경우 </p>



<p class="has-medium-font-size">기존에 채팅방에 남아있던 Muzi도 Prodo로 다음과 같이 변경된다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>&#8220;Prodo님이 들어왔습니다.&#8221;<br>&#8220;Prodo님이 들어왔습니다.&#8221;<br>&#8220;Prodo님이 나갔습니다.&#8221;<br>&#8220;Prodo님이 들어왔습니다.&#8221;</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">채팅방은 중복 닉네임을 허용하기 때문에, 현재 채팅방에는 Prodo라는 닉네임을 사용하는 사람이 두 명이 있다. </p>



<p class="has-medium-font-size">이제, 채팅방에 두 번째로 들어왔던 Prodo가 Ryan으로 닉네임을 변경하면 채팅방 메시지는 다음과 같이 변경된다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>&#8220;Prodo님이 들어왔습니다.&#8221;<br>&#8220;Ryan님이 들어왔습니다.&#8221;<br>&#8220;Prodo님이 나갔습니다.&#8221;<br>&#8220;Prodo님이 들어왔습니다.&#8221;</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">채팅방에 들어오고 나가거나, 닉네임을 변경한 기록이 담긴 문자열 배열 record가 매개변수로 주어질 때, </p>



<p class="has-medium-font-size">모든 기록이 처리된 후, </p>



<p class="has-medium-font-size">최종적으로 방을 개설한 사람이 보게 되는 메시지를 문자열 배열 형태로 return 하도록 solution 함수를 완성하라.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h5 class="wp-block-heading has-large-font-size">제한사항</h5>



<ul class="wp-block-list">
<li>record는 다음과 같은 문자열이 담긴 배열이며, 길이는&nbsp;<code>1</code>&nbsp;이상&nbsp;<code>100,000</code>&nbsp;이하이다.</li>



<li>다음은 record에 담긴 문자열에 대한 설명이다.
<ul class="wp-block-list">
<li>모든 유저는 [유저 아이디]로 구분한다.</li>



<li>[유저 아이디] 사용자가 [닉네임]으로 채팅방에 입장 &#8211; &#8220;Enter [유저 아이디] [닉네임]&#8221; (ex. &#8220;Enter uid1234 Muzi&#8221;)</li>



<li>[유저 아이디] 사용자가 채팅방에서 퇴장 &#8211; &#8220;Leave [유저 아이디]&#8221; (ex. &#8220;Leave uid1234&#8221;)</li>



<li>[유저 아이디] 사용자가 닉네임을 [닉네임]으로 변경 &#8211; &#8220;Change [유저 아이디] [닉네임]&#8221; (ex. &#8220;Change uid1234 Muzi&#8221;)</li>



<li>첫 단어는 Enter, Leave, Change 중 하나이다.</li>



<li>각 단어는 공백으로 구분되어 있으며, 알파벳 대문자, 소문자, 숫자로만 이루어져있다.</li>



<li>유저 아이디와 닉네임은 알파벳 대문자, 소문자를 구별한다.</li>



<li>유저 아이디와 닉네임의 길이는&nbsp;<code>1</code>&nbsp;이상&nbsp;<code>10</code>&nbsp;이하이다.</li>



<li>채팅방에서 나간 유저가 닉네임을 변경하는 등 잘못 된 입력은 주어지지 않는다.</li>
</ul>
</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h5 class="wp-block-heading">입출력 예</h5>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">record</th><th class="has-text-align-left" data-align="left">result</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left"><code>["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]</code></td><td class="has-text-align-left" data-align="left"><code>["Prodo님이 들어왔습니다.", "Ryan님이 들어왔습니다.", "Prodo님이 나갔습니다.", "Prodo님이 들어왔습니다."]</code></td></tr></tbody></table></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h5 class="wp-block-heading">입출력 예 설명</h5>



<p class="has-medium-font-size">입출력 예 #1</p>



<p class="has-medium-font-size">문제의 설명과 같다.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h1 class="wp-block-heading">통과된 코드</h1>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;string>
#include &lt;vector>
#include &lt;sstream>
#include &lt;map>

using namespace std;

map&lt;string, string> userRegistMap;
multimap&lt;int , pair&lt;string, int>> dialogue;
string suffix[] = { "님이 들어왔습니다.", "님이 나갔습니다." };

vector&lt;string> solution(vector&lt;string> record) {
    vector&lt;string> answer;
	int diaCnt = 0;
	for (auto &amp;it : record) {
		string command, uid, nickname;
		int pivot = 0;
		for (int i = 0; i &lt; it.length(); i++) {
			if (it[i] != ' ') command.push_back(it[i]);		
			else {
				pivot = i + 1;
				break;
			}
		}

		for (int i = pivot; i &lt; it.length(); i++) {
			if (it[i] != ' ') uid.push_back(it[i]);			
			else {
				pivot = i + 1;
				break;
			}
		}

		if (command == "Enter" || command == "Change") {
			for (int i = pivot; i &lt; it.length(); i++) nickname.push_back(it[i]);
			auto it2 = userRegistMap.find(uid);
			if (command == "Enter") {
				if (it2 == userRegistMap.end()) userRegistMap.insert(make_pair(uid, nickname));			
				else it2->second = nickname;
				dialogue.insert(make_pair(diaCnt, make_pair(uid, 0)));
			}
			else it2->second = nickname;
		}
		else dialogue.insert(make_pair(diaCnt, make_pair(uid, 1)));
		diaCnt++;
	}

	for (auto &amp;it : dialogue) {
		string str;
		str.insert(0, userRegistMap.find(it.second.first)->second);
		str.insert(str.length(), suffix[it.second.second]);
		answer.push_back(str);
	}

    return answer;
}</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://lycos7560.com/wp-content/uploads/2023/03/image-66.png" alt="" class="wp-image-34154" width="631" height="1007" srcset="https://lycos7560.com/wp-content/uploads/2023/03/image-66.png 525w, https://lycos7560.com/wp-content/uploads/2023/03/image-66-188x300.png 188w" sizes="(max-width: 631px) 100vw, 631px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">더 효율적인 코드</h1>



<p class="has-medium-font-size"><a href="https://school.programmers.co.kr/learn/courses/30/lessons/42888/solution_groups?language=cpp&amp;type=all" target="_blank" rel="noreferrer noopener">https://school.programmers.co.kr/learn/courses/30/lessons/42888/solution_groups?language=cpp&amp;type=all</a></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;string>
#include &lt;vector>
#include &lt;sstream>
#include &lt;iostream>
#include &lt;map>
using namespace std;


vector&lt;string> solution(vector&lt;string> record) {
    vector&lt;string> answer;
    string command;
    string ID;
    string uid;
   map&lt;string,string> m;


    for(string input:record)
    {
        stringstream ss(input);
        ss>>command;
        ss>>uid;
        if(command=="Enter" || command=="Change")
        {
            ss>>ID;
            m[uid]=ID;
        }
    }

   for(string input:record)
    {
        stringstream ss(input);
        ss>>command;
        ss>>uid;
        if(command=="Enter")
        {
         ID=(m.find(uid)->second);

            string temp = ID+"님이 들어왔습니다.";
         answer.push_back(temp);

        }
      else if(command=="Leave")
      {
         ID=(m.find(uid)->second);
            string temp = ID+"님이 나갔습니다.";
         answer.push_back(temp);
      }
    }
    return answer;
}
</pre>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5698326622209671" data-ad-slot="4245812909"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-42888-%ec%98%a4%ed%94%88%ec%b1%84%ed%8c%85%eb%b0%a9-2019-kakao-blind-recruitment/34142/">Programmers 42888 오픈채팅방 [2019 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/cpp/programmers/programmers-42888-%ec%98%a4%ed%94%88%ec%b1%84%ed%8c%85%eb%b0%a9-2019-kakao-blind-recruitment/34142/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmers 17686 [3차] 파일명 정렬 [2018 KAKAO BLIND RECRUITMENT]</title>
		<link>https://lycos7560.com/cpp/programmers/programmers-17686-3%ec%b0%a8-%ed%8c%8c%ec%9d%bc%eb%aa%85-%ec%a0%95%eb%a0%ac-2018-kakao-blind-recruitment/34125/</link>
					<comments>https://lycos7560.com/cpp/programmers/programmers-17686-3%ec%b0%a8-%ed%8c%8c%ec%9d%bc%eb%aa%85-%ec%a0%95%eb%a0%ac-2018-kakao-blind-recruitment/34125/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Sat, 18 Mar 2023 02:19:57 +0000</pubDate>
				<category><![CDATA[C++/CPP]]></category>
		<category><![CDATA[programmers]]></category>
		<category><![CDATA[[2018 KAKAO BLIND RECRUITMENT]]]></category>
		<category><![CDATA[[3차] 파일명 정렬]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[COMPARE]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[Programmers 17686]]></category>
		<category><![CDATA[Programmers 17686번]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기본]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[문자열]]></category>
		<category><![CDATA[알고리즘]]></category>
		<category><![CDATA[코딩테스트]]></category>
		<category><![CDATA[코테]]></category>
		<category><![CDATA[파싱]]></category>
		<category><![CDATA[파싱(parsing)]]></category>
		<category><![CDATA[파일명 정렬]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=34125</guid>

					<description><![CDATA[<p>Programmers 17686번 '파일명 정렬' 문제에 대한 글입니다. (This article is about the problem of 'Sorting File Names' in Programmers 17686. [2018 KAKAO BLIND RECRUITMENT])</p>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-17686-3%ec%b0%a8-%ed%8c%8c%ec%9d%bc%eb%aa%85-%ec%a0%95%eb%a0%ac-2018-kakao-blind-recruitment/34125/">Programmers 17686 [3차] 파일명 정렬 [2018 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<!-- HorizontalAD -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5698326622209671" data-ad-slot="6908948342" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-6ebb29f8      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차 테이블						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#파일명-정렬" class="uagb-toc-link__trigger">파일명 정렬</a><li class="uagb-toc__list"><a href="#통과된-코드" class="uagb-toc-link__trigger">통과된 코드</a></ol>					</div>
									</div>
				</div>
			


<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">파일명 정렬</h1>



<p class="has-medium-font-size"><a href="https://school.programmers.co.kr/learn/courses/30/lessons/17686" target="_blank" rel="noreferrer noopener">https://school.programmers.co.kr/learn/courses/30/lessons/17686</a></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 </p>



<p class="has-medium-font-size">카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다.</p>



<p class="has-medium-font-size">저장소 서버에는 프로그램의 과거 버전을 모두 담고 있어, 이름 순으로 정렬된 파일 목록은 보기가 불편했다. </p>



<p class="has-medium-font-size">파일을 이름 순으로 정렬하면 나중에 만들어진 ver-10.zip이 ver-9.zip보다 먼저 표시되기 때문이다.</p>



<p class="has-medium-font-size">버전 번호 외에도 숫자가 포함된 파일 목록은 여러 면에서 관리하기 불편했다. </p>



<p class="has-medium-font-size">예컨대 파일 목록이 [&#8220;img12.png&#8221;, &#8220;img10.png&#8221;, &#8220;img2.png&#8221;, &#8220;img1.png&#8221;]일 경우, </p>



<p class="has-medium-font-size">일반적인 정렬은 [&#8220;img1.png&#8221;, &#8220;img10.png&#8221;, &#8220;img12.png&#8221;, &#8220;img2.png&#8221;] 순이 되지만, </p>



<p class="has-medium-font-size">숫자 순으로 정렬된 [&#8220;img1.png&#8221;, &#8220;img2.png&#8221;, &#8220;img10.png&#8221;, img12.png&#8221;] 순이 훨씬 자연스럽다.</p>



<p class="has-medium-font-size">무지는 단순한 문자 코드 순이 아닌, 파일명에 포함된 숫자를 반영한 정렬 기능을 저장소 관리 프로그램에 구현하기로 했다.</p>



<p class="has-medium-font-size">소스 파일 저장소에 저장된 파일명은 100 글자 이내로, </p>



<p class="has-medium-font-size">영문 대소문자, 숫자, 공백(&#8221; &#8220;), 마침표(&#8220;.&#8221;), 빼기 부호(&#8220;-&#8220;)만으로 이루어져 있다. </p>



<p class="has-medium-font-size">파일명은 영문자로 시작하며, 숫자를 하나 이상 포함하고 있다.</p>



<p class="has-medium-font-size">파일명은 크게 HEAD, NUMBER, TAIL의 세 부분으로 구성된다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">HEAD는 숫자가 아닌 문자로 이루어져 있으며, 최소한 한 글자 이상이다.</p>



<p class="has-medium-font-size">NUMBER는 한 글자에서 최대 다섯 글자 사이의 연속된 숫자로 이루어져 있으며, 앞쪽에 0이 올 수 있다.&nbsp;0부터&nbsp;99999&nbsp;사이의 숫자로,&nbsp;00000이나&nbsp;0101&nbsp;등도 가능하다.</p>



<p class="has-medium-font-size">TAIL은 그 나머지 부분으로, 여기에는 숫자가 다시 나타날 수도 있으며, 아무 글자도 없을 수 있다. </p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">파일명</th><th class="has-text-align-left" data-align="left">HEAD</th><th class="has-text-align-left" data-align="left">NUMBER</th><th class="has-text-align-left" data-align="left">TAIL</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left"><code>foo9.txt</code></td><td class="has-text-align-left" data-align="left"><code>foo</code></td><td class="has-text-align-left" data-align="left"><code>9</code></td><td class="has-text-align-left" data-align="left"><code>.txt</code></td></tr><tr><td class="has-text-align-left" data-align="left"><code>foo010bar020.zip</code></td><td class="has-text-align-left" data-align="left"><code>foo</code></td><td class="has-text-align-left" data-align="left"><code>010</code></td><td class="has-text-align-left" data-align="left"><code>bar020.zip</code></td></tr><tr><td class="has-text-align-left" data-align="left"><code>F-15</code></td><td class="has-text-align-left" data-align="left"><code>F-</code></td><td class="has-text-align-left" data-align="left"><code>15</code></td><td class="has-text-align-left" data-align="left">(빈 문자열)</td></tr></tbody></table></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">파일명을 세 부분으로 나눈 후, 다음 기준에 따라 파일명을 정렬한다.</p>



<ul class="wp-block-list">
<li>파일명은 우선 HEAD 부분을 기준으로 사전 순으로 정렬한다. 이때, 문자열 비교 시 대소문자 구분을 하지 않는다.&nbsp;<code>MUZI</code>와&nbsp;<code>muzi</code>,&nbsp;<code>MuZi</code>는 정렬 시에 같은 순서로 취급된다.</li>



<li>파일명의 HEAD 부분이 대소문자 차이 외에는 같을 경우, NUMBER의 숫자 순으로 정렬한다. 9 &lt; 10 &lt; 0011 &lt; 012 &lt; 13 &lt; 014 순으로 정렬된다. 숫자 앞의 0은 무시되며, 012와 12는 정렬 시에 같은 같은 값으로 처리된다.</li>



<li>두 파일의 HEAD 부분과, NUMBER의 숫자도 같을 경우, 원래 입력에 주어진 순서를 유지한다.&nbsp;<code>MUZI01.zip</code>과&nbsp;<code>muzi1.png</code>가 입력으로 들어오면, 정렬 후에도 입력 시 주어진 두 파일의 순서가 바뀌어서는 안 된다.</li>
</ul>



<p class="has-medium-font-size">무지를 도와 파일명 정렬 프로그램을 구현하라.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입력 형식</h3>



<p class="has-medium-font-size">입력으로 배열&nbsp;<code>files</code>가 주어진다.</p>



<ul class="wp-block-list">
<li><code>files</code>는 1000 개 이하의 파일명을 포함하는 문자열 배열이다.</li>



<li>각 파일명은 100 글자 이하 길이로, 영문 대소문자, 숫자, 공백(&#8221; &#8220;), 마침표(&#8220;.&#8221;), 빼기 부호(&#8220;-&#8220;)만으로 이루어져 있다. 파일명은 영문자로 시작하며, 숫자를 하나 이상 포함하고 있다.</li>



<li>중복된 파일명은 없으나, 대소문자나 숫자 앞부분의 0 차이가 있는 경우는 함께 주어질 수 있다. (<code>muzi1.txt</code>,&nbsp;<code>MUZI1.txt</code>,&nbsp;<code>muzi001.txt</code>,&nbsp;<code>muzi1.TXT</code>는 함께 입력으로 주어질 수 있다.)</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">출력 형식</h3>



<p class="has-medium-font-size">위 기준에 따라 정렬된 배열을 출력한다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입출력 예제</h3>



<p class="has-medium-font-size">입력: [&#8220;img12.png&#8221;, &#8220;img10.png&#8221;, &#8220;img02.png&#8221;, &#8220;img1.png&#8221;, &#8220;IMG01.GIF&#8221;, &#8220;img2.JPG&#8221;]<br>출력: [&#8220;img1.png&#8221;, &#8220;IMG01.GIF&#8221;, &#8220;img02.png&#8221;, &#8220;img2.JPG&#8221;, &#8220;img10.png&#8221;, &#8220;img12.png&#8221;]</p>



<p class="has-medium-font-size">입력: [&#8220;F-5 Freedom Fighter&#8221;, &#8220;B-50 Superfortress&#8221;, &#8220;A-10 Thunderbolt II&#8221;, &#8220;F-14 Tomcat&#8221;]<br>출력: [&#8220;A-10 Thunderbolt II&#8221;, &#8220;B-50 Superfortress&#8221;, &#8220;F-5 Freedom Fighter&#8221;, &#8220;F-14 Tomcat&#8221;]</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h1 class="wp-block-heading">통과된 코드</h1>



<p class="has-medium-font-size">TAIL은 필요가 없다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;string>
#include &lt;vector>
#include &lt;tuple>
#include &lt;algorithm>

using namespace std;

vector&lt;tuple&lt;string, int, int>> sliceVector;
// 원본의 순서, Head, number, tail, originNum

bool cmp(tuple&lt;string, int, int> a, tuple&lt;string, int, int> b) {
	if (get&lt;0>(a) == get&lt;0>(b)) {
		if (get&lt;1>(a) == get&lt;1>(b)) {
			return get&lt;2>(a) &lt; get&lt;2>(b);
		}
		return get&lt;1>(a) &lt; get&lt;1>(b);
	}
	return get&lt;0>(a) &lt; get&lt;0>(b);
}

vector&lt;string> solution(vector&lt;string> files) {
	vector&lt;string> answer;

	int cnt = 0, number = 0;
	for (auto&amp; it : files) {
		string head = "", numStr = "";
		int pivot = 0;
		for (int i = 0; i &lt; it.length(); i++) {
			if (it[i] >= 48 &amp;&amp; it[i] &lt;= 57) {
				head = it.substr(pivot, i);
				for (auto&amp; ch : head) ch = toupper(ch); // 전부 대문자로 변환
				pivot = i;
				break;
			}
		}
		for (int i = 0; i &lt; 5; pivot++) {
			if (it[pivot] >= 48 &amp;&amp; it[pivot] &lt;= 57) {
				numStr.push_back(it[pivot]);
				continue;
			}
			number = atoi(numStr.c_str());
			break;
		}

		sliceVector.push_back(make_tuple(head, number, cnt));
		cnt++;
	}

	sort(sliceVector.begin(), sliceVector.end(), cmp);
	for (auto&amp; it : sliceVector) answer.push_back(files[get&lt;2>(it)]);
	
	return answer;
}</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="466" height="599" src="https://lycos7560.com/wp-content/uploads/2023/03/image-63.png" alt="" class="wp-image-34127" srcset="https://lycos7560.com/wp-content/uploads/2023/03/image-63.png 466w, https://lycos7560.com/wp-content/uploads/2023/03/image-63-233x300.png 233w" sizes="(max-width: 466px) 100vw, 466px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5698326622209671" data-ad-slot="4245812909"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-17686-3%ec%b0%a8-%ed%8c%8c%ec%9d%bc%eb%aa%85-%ec%a0%95%eb%a0%ac-2018-kakao-blind-recruitment/34125/">Programmers 17686 [3차] 파일명 정렬 [2018 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/cpp/programmers/programmers-17686-3%ec%b0%a8-%ed%8c%8c%ec%9d%bc%eb%aa%85-%ec%a0%95%eb%a0%ac-2018-kakao-blind-recruitment/34125/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmers 17682 [1차] 다트 게임 [2018 KAKAO BLIND RECRUITMENT]</title>
		<link>https://lycos7560.com/cpp/programmers/programmers-17682-1%ec%b0%a8-%eb%8b%a4%ed%8a%b8-%ea%b2%8c%ec%9e%84-2018-kakao-blind-recruitment/34054/</link>
					<comments>https://lycos7560.com/cpp/programmers/programmers-17682-1%ec%b0%a8-%eb%8b%a4%ed%8a%b8-%ea%b2%8c%ec%9e%84-2018-kakao-blind-recruitment/34054/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Wed, 15 Mar 2023 18:18:37 +0000</pubDate>
				<category><![CDATA[C++/CPP]]></category>
		<category><![CDATA[programmers]]></category>
		<category><![CDATA[[1차] 다트 게임]]></category>
		<category><![CDATA[17682]]></category>
		<category><![CDATA[17682번]]></category>
		<category><![CDATA[2018 KAKAO BLIND RECRUITMENT]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[Programmers 17682]]></category>
		<category><![CDATA[Programmers 17682번]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[구현]]></category>
		<category><![CDATA[기본]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[다트 게임]]></category>
		<category><![CDATA[알고리즘]]></category>
		<category><![CDATA[코딩테스트]]></category>
		<category><![CDATA[코테]]></category>
		<category><![CDATA[프로그래머스]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=34054</guid>

					<description><![CDATA[<p>Programmers 17682 '[1차] 다트 게임' 문제에 대한 글입니다.<br />
단순 구현 문제입니다. (This article is about the programmers 17682 '[1st] Dart Game' problem.<br />
It's a simple implementation problem.)</p>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-17682-1%ec%b0%a8-%eb%8b%a4%ed%8a%b8-%ea%b2%8c%ec%9e%84-2018-kakao-blind-recruitment/34054/">Programmers 17682 [1차] 다트 게임 [2018 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<!-- HorizontalAD -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5698326622209671" data-ad-slot="6908948342" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-457c7091      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차 테이블						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#다트-게임" class="uagb-toc-link__trigger">다트 게임</a><li class="uagb-toc__list"><a href="#정-리" class="uagb-toc-link__trigger">정 리</a><li class="uagb-toc__list"><a href="#통과된-코드" class="uagb-toc-link__trigger">통과된 코드</a></ol>					</div>
									</div>
				</div>
			


<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">다트 게임</h1>



<p class="has-medium-font-size"><a href="https://school.programmers.co.kr/learn/courses/30/lessons/17682" target="_blank" rel="noreferrer noopener">https://school.programmers.co.kr/learn/courses/30/lessons/17682</a></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="520" height="695" src="https://lycos7560.com/wp-content/uploads/2023/03/image-58.jpg" alt="" class="wp-image-34057" srcset="https://lycos7560.com/wp-content/uploads/2023/03/image-58.jpg 520w, https://lycos7560.com/wp-content/uploads/2023/03/image-58-224x300.jpg 224w" sizes="(max-width: 520px) 100vw, 520px" /></figure>



<div style="height:22px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. </p>



<p class="has-medium-font-size">다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다.</p>



<p class="has-medium-font-size">갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. </p>



<p class="has-medium-font-size">다트 게임의 점수 계산 로직은 아래와 같다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">1. 다트 게임은 총 3번의 기회로 구성된다.</p>



<p class="has-medium-font-size">2. 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다.</p>



<p class="has-medium-font-size">3. 점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수1&nbsp;, 점수2&nbsp;, 점수3&nbsp;)으로 계산된다.</p>



<p class="has-medium-font-size">4. 옵션으로 스타상(<em>) , 아차상(#)이 존재하며 스타상(</em>) 당첨 시 해당 점수와 바로 전에 얻은 점수를 각 2배로 만든다. 아차상(#) 당첨 시 해당 점수는 마이너스된다.</p>



<p class="has-medium-font-size">5. 스타상(<em>)은 첫 번째 기회에서도 나올 수 있다. 이 경우 첫 번째 스타상(</em>)의 점수만 2배가 된다. (예제 4번 참고)</p>



<p class="has-medium-font-size">6. 스타상(<em>)의 효과는 다른 스타상(</em>)의 효과와 중첩될 수 있다. 이 경우 중첩된 스타상(*) 점수는 4배가 된다. (예제 4번 참고)</p>



<p class="has-medium-font-size">7. 스타상(*)의 효과는 아차상(#)의 효과와 중첩될 수 있다. 이 경우 중첩된 아차상(#)의 점수는 -2배가 된다. (예제 5번 참고)</p>



<p class="has-medium-font-size">8. Single(S), Double(D), Triple(T)은 점수마다 하나씩 존재한다.</p>



<p class="has-medium-font-size">9. 스타상(*), 아차상(#)은 점수마다 둘 중 하나만 존재할 수 있으며, 존재하지 않을 수도 있다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">0~10의 정수와 문자 S, D, T, *, #로 구성된 문자열이 입력될 시 총점수를 반환하는 함수를 작성하라.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입력 형식</h3>



<p class="has-medium-font-size">&#8220;점수|보너스|[옵션]&#8221;으로 이루어진 문자열 3세트.</p>



<p class="has-medium-font-size">예)&nbsp;<code>1S2D*3T</code></p>



<ul class="wp-block-list">
<li>점수는 0에서 10 사이의 정수이다.</li>



<li>보너스는 S, D, T 중 하나이다.</li>



<li>옵선은 *이나 # 중 하나이며, 없을 수도 있다.</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">출력 형식</h3>



<p class="has-medium-font-size">3번의 기회에서 얻은 점수 합계에 해당하는 정수값을 출력한다.</p>



<p class="has-medium-font-size">예) 37</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입출력 예제</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">예제</th><th class="has-text-align-left" data-align="left">dartResult</th><th class="has-text-align-left" data-align="left">answer</th><th class="has-text-align-left" data-align="left">설명</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">1</td><td class="has-text-align-left" data-align="left"><code>1S2D*3T</code></td><td class="has-text-align-left" data-align="left">37</td><td class="has-text-align-left" data-align="left">1<sup>1</sup>&nbsp;* 2 + 2<sup>2</sup>&nbsp;* 2 + 3<sup>3</sup></td></tr><tr><td class="has-text-align-left" data-align="left">2</td><td class="has-text-align-left" data-align="left"><code>1D2S#10S</code></td><td class="has-text-align-left" data-align="left">9</td><td class="has-text-align-left" data-align="left">1<sup>2</sup>&nbsp;+ 2<sup>1</sup>&nbsp;* (-1) + 10<sup>1</sup></td></tr><tr><td class="has-text-align-left" data-align="left">3</td><td class="has-text-align-left" data-align="left"><code>1D2S0T</code></td><td class="has-text-align-left" data-align="left">3</td><td class="has-text-align-left" data-align="left">1<sup>2</sup>&nbsp;+ 2<sup>1</sup>&nbsp;+ 0<sup>3</sup></td></tr><tr><td class="has-text-align-left" data-align="left">4</td><td class="has-text-align-left" data-align="left"><code>1S*2T*3S</code></td><td class="has-text-align-left" data-align="left">23</td><td class="has-text-align-left" data-align="left">1<sup>1</sup>&nbsp;* 2 * 2 + 2<sup>3</sup>&nbsp;* 2 + 3<sup>1</sup></td></tr><tr><td class="has-text-align-left" data-align="left">5</td><td class="has-text-align-left" data-align="left"><code>1D#2S*3S</code></td><td class="has-text-align-left" data-align="left">5</td><td class="has-text-align-left" data-align="left">1<sup>2</sup>&nbsp;* (-1) * 2 + 2<sup>1</sup>&nbsp;* 2 + 3<sup>1</sup></td></tr><tr><td class="has-text-align-left" data-align="left">6</td><td class="has-text-align-left" data-align="left"><code>1T2D3D#</code></td><td class="has-text-align-left" data-align="left">-4</td><td class="has-text-align-left" data-align="left">1<sup>3</sup>&nbsp;+ 2<sup>2</sup>&nbsp;+ 3<sup>2</sup>&nbsp;* (-1)</td></tr><tr><td class="has-text-align-left" data-align="left">7</td><td class="has-text-align-left" data-align="left"><code>1D2S3T*</code></td><td class="has-text-align-left" data-align="left">59</td><td class="has-text-align-left" data-align="left">1<sup>2</sup>&nbsp;+ 2<sup>1</sup>&nbsp;* 2 + 3<sup>3</sup>&nbsp;* 2</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h1 class="wp-block-heading">정 리 </h1>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1600" height="1432" src="https://lycos7560.com/wp-content/uploads/2023/03/KakaoTalk_20230316_032048465.jpg" alt="" class="wp-image-34061" srcset="https://lycos7560.com/wp-content/uploads/2023/03/KakaoTalk_20230316_032048465.jpg 1600w, https://lycos7560.com/wp-content/uploads/2023/03/KakaoTalk_20230316_032048465-300x269.jpg 300w, https://lycos7560.com/wp-content/uploads/2023/03/KakaoTalk_20230316_032048465-768x687.jpg 768w, https://lycos7560.com/wp-content/uploads/2023/03/KakaoTalk_20230316_032048465-1536x1375.jpg 1536w" sizes="(max-width: 1600px) 100vw, 1600px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">통과된 코드</h1>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;string>
#include &lt;cstdlib>
#include &lt;cmath>

using namespace std;

struct RoundResult // 라운드 결과 구조체
{
    int score;
    int bonus;
    int option;
    int Sum;
    RoundResult() {
        score = 0;
        bonus = 1;
        option = 1;
        Sum = 0;
    }
} RoundResult[3]; // 인덱스 0 ~ 2 선언

int solution(string dartResult) {
    int answer = 0;
    int pivot = 0;
    string str = "";
    for (int i = 0; i &lt; 3; i++) { // 파싱(parsing)
        for (pivot &lt; dartResult.length();;) {
            if (dartResult[pivot] >= 48 &amp;&amp; dartResult[pivot] &lt;= 57) { // 0 ~ 9
                str.push_back(dartResult[pivot]);
                pivot++;
            }
            else {
                RoundResult[i].score = atoi(str.c_str());
                str = "";
                break;
            }
        }

        switch (dartResult[pivot]) {
            case 'S':
                RoundResult[i].bonus = 1;
                pivot++;
                break;
            case 'D':
                RoundResult[i].bonus = 2;
                pivot++;
                break;
            case 'T':
                RoundResult[i].bonus = 3;
                pivot++;
                break;
        }

        switch (dartResult[pivot]) {
            case '*':
                RoundResult[i].option = 2;
                pivot++;
                break;
            case '#':
                RoundResult[i].option = -1;
                pivot++;
                break;
            default:
                break;
        }
    }

    for (int i = 0; i &lt; 3; i++) { // 결과 처리
        RoundResult[i].Sum = pow(RoundResult[i].score, RoundResult[i].bonus) * RoundResult[i].option;
        if (RoundResult[i].option == 2 &amp;&amp; i - 1 >= 0)RoundResult[i - 1].Sum *= RoundResult[i].option;    
    }

    for (int i = 0; i &lt; 3; i++) answer += RoundResult[i].Sum;
    
    return answer;
}
</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="557" height="925" src="https://lycos7560.com/wp-content/uploads/2023/03/image-58.png" alt="" class="wp-image-34058" srcset="https://lycos7560.com/wp-content/uploads/2023/03/image-58.png 557w, https://lycos7560.com/wp-content/uploads/2023/03/image-58-181x300.png 181w" sizes="(max-width: 557px) 100vw, 557px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5698326622209671" data-ad-slot="4245812909"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-17682-1%ec%b0%a8-%eb%8b%a4%ed%8a%b8-%ea%b2%8c%ec%9e%84-2018-kakao-blind-recruitment/34054/">Programmers 17682 [1차] 다트 게임 [2018 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/cpp/programmers/programmers-17682-1%ec%b0%a8-%eb%8b%a4%ed%8a%b8-%ea%b2%8c%ec%9e%84-2018-kakao-blind-recruitment/34054/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmers 17685 [3차] 자동완성 [2018 KAKAO BLIND RECRUITMENT]</title>
		<link>https://lycos7560.com/cpp/programmers/programmers-17685-3%ec%b0%a8-%ec%9e%90%eb%8f%99%ec%99%84%ec%84%b1-2018-kakao-blind-recruitment/33995/</link>
					<comments>https://lycos7560.com/cpp/programmers/programmers-17685-3%ec%b0%a8-%ec%9e%90%eb%8f%99%ec%99%84%ec%84%b1-2018-kakao-blind-recruitment/33995/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Tue, 14 Mar 2023 18:14:09 +0000</pubDate>
				<category><![CDATA[C++/CPP]]></category>
		<category><![CDATA[programmers]]></category>
		<category><![CDATA[[3차] 자동완성]]></category>
		<category><![CDATA[17685]]></category>
		<category><![CDATA[17685번]]></category>
		<category><![CDATA[2018 KAKAO BLIND RECRUITMENT]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[Programmers 17685]]></category>
		<category><![CDATA[Programmers 17685번]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[Trie]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기본]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[알고리즘]]></category>
		<category><![CDATA[자동완성]]></category>
		<category><![CDATA[코딩테스트]]></category>
		<category><![CDATA[코테]]></category>
		<category><![CDATA[트라이]]></category>
		<category><![CDATA[트라이(Trie)]]></category>
		<category><![CDATA[프로그래머스]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=33995</guid>

					<description><![CDATA[<p>Programmers 17685 '[3차] 자동완성' 문제에 대한 글입니다.  'Trie' 자료구조를 이용하여 해결하였습니다. (This article is about the programmers 17685 '[3rd] AutoComplete' problem. We solved it using the 'Trie' data structure.)</p>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-17685-3%ec%b0%a8-%ec%9e%90%eb%8f%99%ec%99%84%ec%84%b1-2018-kakao-blind-recruitment/33995/">Programmers 17685 [3차] 자동완성 [2018 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<!-- HorizontalAD -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5698326622209671" data-ad-slot="6908948342" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-81dc97a8      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차 테이블						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#자동완성" class="uagb-toc-link__trigger">자동완성</a><ul class="uagb-toc__list"><li class="uagb-toc__list"><a href="#접근-방법" class="uagb-toc-link__trigger">접근 방법</a><li class="uagb-toc__list"><li class="uagb-toc__list"><a href="#통과된-코드" class="uagb-toc-link__trigger">통과된 코드</a></ul></ol>					</div>
									</div>
				</div>
			


<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">자동완성</h1>



<p class="has-medium-font-size"><a href="https://school.programmers.co.kr/learn/courses/30/lessons/17685#" target="_blank" rel="noreferrer noopener">https://school.programmers.co.kr/learn/courses/30/lessons/17685#</a></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. </p>



<p class="has-medium-font-size">예를 들어,&nbsp;<code>go</code>&nbsp;가 한 번 입력되었다면, 다음 사용자는&nbsp;<code>g</code>&nbsp;만 입력해도&nbsp;<code>go</code>를 추천해주므로&nbsp;<code>o</code>를 입력할 필요가 없어진다! </p>



<p class="has-medium-font-size">단, 학습에 사용된 단어들 중 앞부분이 같은 경우에는 어쩔 수 없이 다른 문자가 나올 때까지 입력을 해야 한다.</p>



<p class="has-medium-font-size">효과가 얼마나 좋을지 알고 싶은 라이언은 학습된 단어들을 찾을 때 몇 글자를 입력해야 하는지 궁금해졌다.</p>



<p class="has-medium-font-size">예를 들어, 학습된 단어들이 아래와 같을 때</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="raw" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">go
gone
guild
</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<ul class="wp-block-list">
<li><code>go</code>를 찾을 때&nbsp;<code>go</code>를 모두 입력해야 한다.</li>



<li><code>gone</code>을 찾을 때&nbsp;<code>gon</code>&nbsp;까지 입력해야 한다. (<code>gon</code>이 입력되기 전까지는&nbsp;<code>go</code>&nbsp;인지&nbsp;<code>gone</code>인지 확신할 수 없다.)</li>



<li><code>guild</code>를 찾을 때는&nbsp;<code>gu</code>&nbsp;까지만 입력하면&nbsp;<code>guild</code>가 완성된다.</li>
</ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">이 경우 총 입력해야 할 문자의 수는&nbsp;<code>7</code>이다.</p>



<p class="has-medium-font-size">라이언을 도와 위와 같이 문자열이 입력으로 주어지면 학습을 시킨 후, </p>



<p class="has-medium-font-size">학습된 단어들을 순서대로 찾을 때 몇 개의 문자를 입력하면 되는지 계산하는 프로그램을 만들어보자.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입력 형식</h3>



<p class="has-medium-font-size">학습과 검색에 사용될 중복 없는 단어&nbsp;<code>N</code>개가 주어진다.</p>



<p class="has-medium-font-size">모든 단어는 알파벳 소문자로 구성되며 단어의 수&nbsp;<code>N</code>과 단어들의 길이의 총합&nbsp;<code>L</code>의 범위는 다음과 같다.</p>



<ul class="wp-block-list">
<li>2 &lt;=&nbsp;<code>N</code>&nbsp;&lt;= 100,000</li>



<li>2 &lt;=&nbsp;<code>L</code>&nbsp;&lt;= 1,000,000</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">출력 형식</h3>



<p class="has-medium-font-size">단어를 찾을 때 입력해야 할 총 문자수를 리턴한다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입출력 예제</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">words</th><th class="has-text-align-left" data-align="left">result</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">[&#8220;go&#8221;,&#8221;gone&#8221;,&#8221;guild&#8221;]</td><td class="has-text-align-left" data-align="left">7</td></tr><tr><td class="has-text-align-left" data-align="left">[&#8220;abc&#8221;,&#8221;def&#8221;,&#8221;ghi&#8221;,&#8221;jklm&#8221;]</td><td class="has-text-align-left" data-align="left">4</td></tr><tr><td class="has-text-align-left" data-align="left">[&#8220;word&#8221;,&#8221;war&#8221;,&#8221;warrior&#8221;,&#8221;world&#8221;]</td><td class="has-text-align-left" data-align="left">15</td></tr></tbody></table></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입출력 설명</h3>



<ul class="wp-block-list">
<li>첫 번째 예제는 본문 설명과 같다.</li>



<li>두 번째 예제에서는 모든 단어들이 공통된 부분이 없으므로, 가장 앞글자만 입력하면 된다.</li>



<li>세 번째 예제는 총&nbsp;<code>15</code>&nbsp;자를 입력해야 하고 설명은 아래와 같다.
<ul class="wp-block-list">
<li><code>word</code>는&nbsp;<code>word</code>모두 입력해야 한다.</li>



<li><code>war</code>는&nbsp;<code>war</code>&nbsp;까지 모두 입력해야 한다.</li>



<li><code>warrior</code>는&nbsp;<code>warr</code>&nbsp;까지만 입력하면 된다.</li>



<li><code>world</code>는&nbsp;<code>worl</code>까지 입력해야 한다. (<code>word</code>와 구분되어야 함을 명심하자)</li>
</ul>
</li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h2 class="wp-block-heading">접근 방법</h2>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="1548" height="1920" src="https://lycos7560.com/wp-content/uploads/2023/03/KakaoTalk_20230315_025902657.jpg" alt="" class="wp-image-34005" srcset="https://lycos7560.com/wp-content/uploads/2023/03/KakaoTalk_20230315_025902657.jpg 1548w, https://lycos7560.com/wp-content/uploads/2023/03/KakaoTalk_20230315_025902657-242x300.jpg 242w, https://lycos7560.com/wp-content/uploads/2023/03/KakaoTalk_20230315_025902657-768x953.jpg 768w, https://lycos7560.com/wp-content/uploads/2023/03/KakaoTalk_20230315_025902657-1238x1536.jpg 1238w" sizes="(max-width: 1548px) 100vw, 1548px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">통과된 코드</h2>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;string>
#include &lt;vector>
#include &lt;unordered_map>

using namespace std;

// TrieNode클래스를 사용하여 Trie의 각 노드를 표현
class TrieNode {
public:
    unordered_map&lt;char, TrieNode*> children;
    int num; // 연관된 단어의 개수를 저장
    TrieNode() {
        num = 0;
    }
};

// Trie 클래스
class Trie {

private: // Trie의 루트 노드에 대한 포인터인 Trie개인 멤버 변수
    TrieNode* root; // 루트 노드


public:
    Trie() { // 생성자새 인스턴스를 만들고 Trie를 초기화
        root = new TrieNode();
    }

    // 문자열을 받아 Trie에 추가합니다. 
    // 루트 노드에서 시작하여 Trie 아래로 이동하여 단어의 각 문자에 필요한 새 노드를 만듭니다.
    void insert(string word) {
        TrieNode* curr = root; // 시작
        for (char c : word) {
            if (curr->children.find(c) == curr->children.end()) {
                // Trie에 없다면 새 노드 생성
                curr->children[c] = new TrieNode();
            }

            // Trie에 이미 존재하는 경우 기존 노드로 이동
            curr = curr->children[c];
            curr->num++; // 연관된 단어의 개수 추가
        }
    }

    // 단어를 검색합니다.
    // 연관된 단어의 개수가 1이라면 글자수 반환
    int search(string word) {
        TrieNode* curr = root;
        int cnt = 0;
        for (char c : word) {
            curr = curr->children[c];
            cnt++;
            if (curr->num == 1) {
                // 연관된 단어의 개수가 1이라면 
                // 자동완성
                return cnt;
            }
        }
        return 9999; // 문제에서 나올 수 없는 경우 
    }

    // prefix(접두사)로 시작하는 단어가 Trie에 있는지 확인
    int startsWith(string prefix) {
        TrieNode* curr = root;
        for (char c : prefix) {
            if (curr->children.find(c) == curr->children.end()) {
                return false;
            }
            curr = curr->children[c];
        }
        return curr->children.size();
    }

};

int solution(vector&lt;string> words) {
    int answer = 0;
    Trie trie;
    for (auto&amp; it : words) {
        trie.insert(it);
    }

    for (auto&amp; it : words) {
        if (trie.startsWith(it) >= 1) {
            // 접두사로 시작하는 단어가 있다면 
            // 단어 전체를 입력해야한다.
            answer += it.length();
            continue;
        }

        // 자동완성 확인
        answer += trie.search(it);
    }

    return answer;
}</pre>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://lycos7560.com/wp-content/uploads/2023/03/image-54.png" alt="" class="wp-image-34000" width="651" height="600" srcset="https://lycos7560.com/wp-content/uploads/2023/03/image-54.png 639w, https://lycos7560.com/wp-content/uploads/2023/03/image-54-300x277.png 300w" sizes="(max-width: 651px) 100vw, 651px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5698326622209671" data-ad-slot="4245812909"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-17685-3%ec%b0%a8-%ec%9e%90%eb%8f%99%ec%99%84%ec%84%b1-2018-kakao-blind-recruitment/33995/">Programmers 17685 [3차] 자동완성 [2018 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/cpp/programmers/programmers-17685-3%ec%b0%a8-%ec%9e%90%eb%8f%99%ec%99%84%ec%84%b1-2018-kakao-blind-recruitment/33995/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmers 17683 [3차] 방금그곡 [2018 KAKAO BLIND RECRUITMENT]</title>
		<link>https://lycos7560.com/cpp/programmers/programmers-17683-3%ec%b0%a8-%eb%b0%a9%ea%b8%88%ea%b7%b8%ea%b3%a1-2018-kakao-blind-recruitment/33916/</link>
					<comments>https://lycos7560.com/cpp/programmers/programmers-17683-3%ec%b0%a8-%eb%b0%a9%ea%b8%88%ea%b7%b8%ea%b3%a1-2018-kakao-blind-recruitment/33916/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Sun, 12 Mar 2023 16:52:00 +0000</pubDate>
				<category><![CDATA[C++/CPP]]></category>
		<category><![CDATA[programmers]]></category>
		<category><![CDATA[[3차] 방금그곡]]></category>
		<category><![CDATA[17683]]></category>
		<category><![CDATA[17683번]]></category>
		<category><![CDATA[2018 KAKAO BLIND RECRUITMENT]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[cstdlib]]></category>
		<category><![CDATA[Programmers 17683]]></category>
		<category><![CDATA[Programmers 17683번]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[tuple]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기본]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[문자열]]></category>
		<category><![CDATA[방금그곡]]></category>
		<category><![CDATA[알고리즘]]></category>
		<category><![CDATA[코딩테스트]]></category>
		<category><![CDATA[코테]]></category>
		<category><![CDATA[프로그래머스]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=33916</guid>

					<description><![CDATA[<p>Programmers 17683 '[3차] 방금그곡' 문제에 대한 글입니다. (Programmers 17683 This article is about the '[Third] Just Now Song' problem. ) [2018 KAKAO BLIND RECRUITMENT]</p>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-17683-3%ec%b0%a8-%eb%b0%a9%ea%b8%88%ea%b7%b8%ea%b3%a1-2018-kakao-blind-recruitment/33916/">Programmers 17683 [3차] 방금그곡 [2018 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<!-- HorizontalAD -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5698326622209671" data-ad-slot="6908948342" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-7d914654      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차 테이블						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#방금그곡" class="uagb-toc-link__trigger">방금그곡</a><li class="uagb-toc__list"><a href="#통과된-코드" class="uagb-toc-link__trigger">통과된 코드</a></ol>					</div>
									</div>
				</div>
			


<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">방금그곡</h1>



<p class="has-medium-font-size"><a href="https://school.programmers.co.kr/learn/courses/30/lessons/17683" target="_blank" rel="noreferrer noopener">https://school.programmers.co.kr/learn/courses/30/lessons/17683</a></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. </p>



<p class="has-medium-font-size">그럴 때 네오는 다음 포털의 &#8216;방금그곡&#8217; 서비스를 이용하곤 한다. </p>



<p class="has-medium-font-size">방금그곡에서는 TV, 라디오 등에서 나온 음악에 관해 제목 등의 정보를 제공하는 서비스이다.</p>



<p class="has-medium-font-size">네오는 자신이 기억한 멜로디를 가지고 방금그곡을 이용해 음악을 찾는다. </p>



<p class="has-medium-font-size">그런데 라디오 방송에서는 한 음악을 반복해서 재생할 때도 있어서 네오가 기억하고 있는 멜로디는 </p>



<p class="has-medium-font-size">음악 끝부분과 처음 부분이 이어서 재생된 멜로디일 수도 있다. </p>



<p class="has-medium-font-size">반대로, 한 음악을 중간에 끊을 경우 원본 음악에는 네오가 기억한 멜로디가 들어있다 해도 그 곡이 네오가 들은 곡이 아닐 수도 있다. </p>



<p class="has-medium-font-size">그렇기 때문에 네오는 기억한 멜로디를 재생 시간과 제공된 악보를 직접 보면서 비교하려고 한다. </p>



<p class="has-medium-font-size">다음과 같은 가정을 할 때 네오가 찾으려는 음악의 제목을 구하여라.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">방금그곡 서비스에서는 음악 제목, 재생이 시작되고 끝난 시각, 악보를 제공한다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">네오가 기억한 멜로디와 악보에 사용되는 음은 C, C#, D, D#, E, F, F#, G, G#, A, A#, B 12개이다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">각 음은 1분에 1개씩 재생된다. 음악은 반드시 처음부터 재생되며 음악 길이보다 재생된 시간이 길 때는 <br>음악이 끊김 없이 처음부터 반복해서 재생된다. 음악 길이보다 재생된 시간이 짧을 때는 처음부터 재생 시간만큼만 재생된다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">음악이 00:00를 넘겨서까지 재생되는 일은 없다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">조건이 일치하는 음악이 여러 개일 때에는 라디오에서 재생된 시간이 제일 긴 음악 제목을 반환한다. <br>재생된 시간도 같을 경우 먼저 입력된 음악 제목을 반환한다.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">조건이 일치하는 음악이 없을 때에는 “(None)”을 반환한다.</p>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입력 형식</h3>



<p class="has-medium-font-size">입력으로 네오가 기억한 멜로디를 담은 문자열&nbsp;<code>m</code>과 방송된 곡의 정보를 담고 있는 배열&nbsp;<code>musicinfos</code>가 주어진다.</p>



<ul class="wp-block-list">
<li><code>m</code>은 음&nbsp;<code>1</code>개 이상&nbsp;<code>1439</code>개 이하로 구성되어 있다.</li>



<li><code>musicinfos</code>는&nbsp;<code>100</code>개 이하의 곡 정보를 담고 있는 배열로, 각각의 곡 정보는 음악이 시작한 시각, 끝난 시각, 음악 제목, 악보 정보가 &#8216;<code>,</code>&#8216;로 구분된 문자열이다.
<ul class="wp-block-list">
<li>음악의 시작 시각과 끝난 시각은 24시간&nbsp;<code>HH:MM</code>&nbsp;형식이다.</li>



<li>음악 제목은 &#8216;<code>,</code>&#8216; 이외의 출력 가능한 문자로 표현된 길이&nbsp;<code>1</code>&nbsp;이상&nbsp;<code>64</code>&nbsp;이하의 문자열이다.</li>



<li>악보 정보는 음&nbsp;<code>1</code>개 이상&nbsp;<code>1439</code>개 이하로 구성되어 있다.</li>
</ul>
</li>
</ul>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">출력 형식</h3>



<p class="has-medium-font-size">조건과 일치하는 음악 제목을 출력한다.</p>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입출력 예시</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th class="has-text-align-left" data-align="left">m</th><th class="has-text-align-left" data-align="left">musicinfos</th><th class="has-text-align-left" data-align="left">answer</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">&#8220;ABCDEFG&#8221;</td><td class="has-text-align-left" data-align="left">[&#8220;12:00,12:14,HELLO,CDEFGAB&#8221;, &#8220;13:00,13:05,WORLD,ABCDEF&#8221;]</td><td class="has-text-align-left" data-align="left">&#8220;HELLO&#8221;</td></tr><tr><td class="has-text-align-left" data-align="left">&#8220;CC#BCC#BCC#BCC#B&#8221;</td><td class="has-text-align-left" data-align="left">[&#8220;03:00,03:30,FOO,CC#B&#8221;, &#8220;04:00,04:08,BAR,CC#BCC#BCC#B&#8221;]</td><td class="has-text-align-left" data-align="left">&#8220;FOO&#8221;</td></tr><tr><td class="has-text-align-left" data-align="left">&#8220;ABC&#8221;</td><td class="has-text-align-left" data-align="left">[&#8220;12:00,12:14,HELLO,C#DEFGAB&#8221;, &#8220;13:00,13:05,WORLD,ABCDEF&#8221;]</td><td class="has-text-align-left" data-align="left">&#8220;WORLD&#8221;</td></tr></tbody></table></figure>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">설명</h3>



<p>첫 번째 예시에서 HELLO는 길이가 7분이지만 12:00부터 12:14까지 재생되었으므로 실제로 CDEFGABCDEFGAB로 재생되었고, 이 중에 기억한 멜로디인 ABCDEFG가 들어있다.<br>세 번째 예시에서 HELLO는 C#DEFGABC#DEFGAB로, WORLD는 ABCDE로 재생되었다. HELLO 안에 있는 ABC#은 기억한 멜로디인 ABC와 일치하지 않고, WORLD 안에 있는 ABC가 기억한 멜로디와 일치한다.</p>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h1 class="wp-block-heading">통과된 코드</h1>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;string>
#include &lt;vector>
#include &lt;algorithm>
#include &lt;tuple>


using namespace std;

string DistinguishMelody(string m) // # 부분을 처리
{
    string str;
    for (int i = m.length() - 1; i >= 0; i--) {
        if (m[i] == '#') {
            str.push_back(m[i - 1] + 32);
            i--;
        }
        else str.push_back(m[i]);
    }
    reverse(str.begin(), str.end());
    return str;
}

tuple&lt;string, string, int> Slicing(string str)
{
    int startH = atoi(str.substr(0, 2).c_str());
    int endH = atoi(str.substr(6, 2).c_str());
    int startM = atoi(str.substr(3, 2).c_str());
    int endM = atoi(str.substr(9, 2).c_str());
    int resInt = (endH - startH) * 60 + (endM - startM);
    string str2 = str.substr(12, str.length() - 1);
    int pv = 0;
    for (int i = 0; i &lt; str2.length(); i++) {
        if (str2[i] == ',') {
            pv = i;
            break;
        }
    }
    string name = str2.substr(0, pv);
    string melody = DistinguishMelody(str2.substr(pv + 1, str.length() - 1));
    int cnt = melody.length();
    for (int i = melody.length(); i &lt; resInt; i++) {
        melody.push_back(melody[i % cnt]);
    }
    melody = melody.substr(0, resInt);

    tuple&lt;string, string, int> res = make_tuple(name, melody, resInt);
    return res;
}

string solution(string m, vector&lt;string> musicinfos) {
    string answer = "";
    m = DistinguishMelody(m);
    int answerlength = 0;
    for (auto &amp;it : musicinfos) {
        tuple&lt;string, string, int> res = Slicing(it);
        string str = get&lt;1>(res);

        for (int i = 0; i &lt; str.length(); i++) {
           for (int j = 0; j &lt; m.length(); j++) {
              if (str[j + i] != m[j]) break;
              if (j == m.length() - 1) {
                  if (get&lt;2>(res) > answerlength) {
                      answerlength = get&lt;2>(res);
                      answer = get&lt;0>(res);
                  }
              }
           }
        }
    }
    
    if (answerlength == 0) answer = "(None)";

    return answer;
}</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="709" height="785" src="https://lycos7560.com/wp-content/uploads/2023/03/image-46.png" alt="" class="wp-image-33918" srcset="https://lycos7560.com/wp-content/uploads/2023/03/image-46.png 709w, https://lycos7560.com/wp-content/uploads/2023/03/image-46-271x300.png 271w" sizes="(max-width: 709px) 100vw, 709px" /></figure>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5698326622209671" data-ad-slot="4245812909"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-17683-3%ec%b0%a8-%eb%b0%a9%ea%b8%88%ea%b7%b8%ea%b3%a1-2018-kakao-blind-recruitment/33916/">Programmers 17683 [3차] 방금그곡 [2018 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/cpp/programmers/programmers-17683-3%ec%b0%a8-%eb%b0%a9%ea%b8%88%ea%b7%b8%ea%b3%a1-2018-kakao-blind-recruitment/33916/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Programmers 17687 [3차] n진수 게임 [2018 KAKAO BLIND RECRUITMENT]</title>
		<link>https://lycos7560.com/cpp/programmers/programmers-17687-3%ec%b0%a8-n%ec%a7%84%ec%88%98-%ea%b2%8c%ec%9e%84-2018-kakao-blind-recruitment/33817/</link>
					<comments>https://lycos7560.com/cpp/programmers/programmers-17687-3%ec%b0%a8-n%ec%a7%84%ec%88%98-%ea%b2%8c%ec%9e%84-2018-kakao-blind-recruitment/33817/#respond</comments>
		
		<dc:creator><![CDATA[lycos7560]]></dc:creator>
		<pubDate>Thu, 09 Mar 2023 16:37:35 +0000</pubDate>
				<category><![CDATA[C++/CPP]]></category>
		<category><![CDATA[programmers]]></category>
		<category><![CDATA[[3차] n진수 게임]]></category>
		<category><![CDATA[<algorithm>]]></category>
		<category><![CDATA[<cstdlib>]]></category>
		<category><![CDATA[<string>]]></category>
		<category><![CDATA[17687]]></category>
		<category><![CDATA[17687번]]></category>
		<category><![CDATA[2018 KAKAO BLIND RECRUITMENT]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[cstdlib]]></category>
		<category><![CDATA[n진수]]></category>
		<category><![CDATA[n진수 게임]]></category>
		<category><![CDATA[Programmers 17687]]></category>
		<category><![CDATA[Programmers 17687번]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[공부]]></category>
		<category><![CDATA[기본]]></category>
		<category><![CDATA[기초]]></category>
		<category><![CDATA[문자열]]></category>
		<category><![CDATA[알고리즘]]></category>
		<category><![CDATA[코딩테스트]]></category>
		<category><![CDATA[코테]]></category>
		<category><![CDATA[프로그래머스]]></category>
		<guid isPermaLink="false">https://lycos7560.com/?p=33817</guid>

					<description><![CDATA[<p>Programmers 17687 '[3차] n진수 게임' 문제에 대한 글입니다. [2018 KAKAO BLIND RECRUITMENT] (This is an article about the problem of Programmers 17687 '[3rd] n-digit game'. [2018 KAKAO BLIND RECRUITMENT])</p>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-17687-3%ec%b0%a8-n%ec%a7%84%ec%88%98-%ea%b2%8c%ec%9e%84-2018-kakao-blind-recruitment/33817/">Programmers 17687 [3차] n진수 게임 [2018 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<!-- HorizontalAD -->
<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-5698326622209671" data-ad-slot="6908948342" data-ad-format="auto" data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>


				<div class="wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-e372bf42      "
					data-scroll= "1"
					data-offset= "30"
					style=""
				>
				<div class="uagb-toc__wrap">
						<div class="uagb-toc__title">
							목차 테이블						</div>
																						<div class="uagb-toc__list-wrap ">
						<ol class="uagb-toc__list"><li class="uagb-toc__list"><a href="#n진수-게임" class="uagb-toc-link__trigger">n진수 게임</a><li class="uagb-toc__list"><a href="#통과된-코드" class="uagb-toc-link__trigger">통과된 코드</a></ol>					</div>
									</div>
				</div>
			


<div style="height:62px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">n진수 게임</h1>



<p class="has-medium-font-size"><a href="https://school.programmers.co.kr/learn/courses/30/lessons/17687" target="_blank" rel="noreferrer noopener">https://school.programmers.co.kr/learn/courses/30/lessons/17687</a></p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-medium-font-size">튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. </p>



<p class="has-medium-font-size">이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다.</p>



<p class="has-medium-font-size">1. 숫자를 0부터 시작해서 차례대로 말한다. </p>



<p class="has-medium-font-size">첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다.</p>



<p class="has-medium-font-size">2. 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. </p>



<p class="has-medium-font-size">즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다.</p>



<p class="has-medium-font-size">이렇게 게임을 진행할 경우,<br><code>0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, …</code><br>순으로 숫자를 말하면 된다.</p>



<p class="has-medium-font-size">한편 코딩 동아리 일원들은 컴퓨터를 다루는 사람답게 이진수로 이 게임을 진행하기도 하는데, 이 경우에는<br><code>0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, …</code><br>순으로 숫자를 말하면 된다.</p>



<p class="has-medium-font-size">이진수로 진행하는 게임에 익숙해져 질려가던 사람들은 좀 더 난이도를 높이기 위해 </p>



<p class="has-medium-font-size">이진법에서 십육진법까지 모든 진법으로 게임을 진행해보기로 했다. </p>



<p class="has-medium-font-size">숫자 게임이 익숙하지 않은 튜브는 게임에 져서 벌칙을 받는 굴욕을 피하기 위해, </p>



<p class="has-medium-font-size">자신이 말해야 하는 숫자를 스마트폰에 미리 출력해주는 프로그램을 만들려고 한다. </p>



<p class="has-medium-font-size">튜브의 프로그램을 구현하라.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입력 형식</h3>



<p class="has-medium-font-size">진법&nbsp;<code>n</code>, 미리 구할 숫자의 갯수&nbsp;<code>t</code>, 게임에 참가하는 인원&nbsp;<code>m</code>, 튜브의 순서&nbsp;<code>p</code>&nbsp;가 주어진다.</p>



<ul class="wp-block-list">
<li>2 ≦&nbsp;<code>n</code>&nbsp;≦ 16</li>



<li>0 ＜&nbsp;<code>t</code>&nbsp;≦ 1000</li>



<li>2 ≦&nbsp;<code>m</code>&nbsp;≦ 100</li>



<li>1 ≦&nbsp;<code>p</code>&nbsp;≦&nbsp;<code>m</code></li>
</ul>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">출력 형식</h3>



<p class="has-medium-font-size">튜브가 말해야 하는 숫자&nbsp;<code>t</code>개를 공백 없이 차례대로 나타낸 문자열. </p>



<p class="has-medium-font-size">단,&nbsp;<code>10</code>~<code>15</code>는 각각 대문자&nbsp;<code>A</code>~<code>F</code>로 출력한다.</p>



<div style="height:40px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">입출력 예제</h3>



<figure class="wp-block-table"><table><thead><tr><th class="has-text-align-left" data-align="left">n</th><th class="has-text-align-left" data-align="left">t</th><th class="has-text-align-left" data-align="left">m</th><th class="has-text-align-left" data-align="left">p</th><th class="has-text-align-left" data-align="left">result</th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">2</td><td class="has-text-align-left" data-align="left">4</td><td class="has-text-align-left" data-align="left">2</td><td class="has-text-align-left" data-align="left">1</td><td class="has-text-align-left" data-align="left">&#8220;0111&#8221;</td></tr><tr><td class="has-text-align-left" data-align="left">16</td><td class="has-text-align-left" data-align="left">16</td><td class="has-text-align-left" data-align="left">2</td><td class="has-text-align-left" data-align="left">1</td><td class="has-text-align-left" data-align="left">&#8220;02468ACE11111111&#8221;</td></tr><tr><td class="has-text-align-left" data-align="left">16</td><td class="has-text-align-left" data-align="left">16</td><td class="has-text-align-left" data-align="left">2</td><td class="has-text-align-left" data-align="left">2</td><td class="has-text-align-left" data-align="left">&#8220;13579BDF01234567&#8221;</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" style="margin-top:var(--wp--preset--spacing--80);margin-bottom:var(--wp--preset--spacing--80)"/>



<h1 class="wp-block-heading">통과된 코드</h1>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<pre class="EnlighterJSRAW" data-enlighter-language="cpp" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="false" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">#include &lt;string>
#include &lt;vector>
#include &lt;algorithm> 

using namespace std;

string decimalToN(int decimalNum, int n) { // N진수로 변환
    if (decimalNum == 0) return "0";
    string str;
    while (decimalNum != 0) {
        int remainder = decimalNum % n;
        if (remainder &lt; 10) str.push_back(remainder + 48); // 숫자
        else str.push_back(remainder + 55); // 알파벳
        decimalNum /= n;
    }
    reverse(str.begin(), str.end()); // 뒤집기
    return str;
}

string solution(int n, int t, int m, int p) {
    string answer = "";
    int cnt = 1;
    for (int i = 0; answer.length() &lt;= t; i++) {
        string str = decimalToN(i, n);
        for (int j = 0; j &lt; str.length(); j++) {
            if (cnt == p) answer.push_back(str[j]);
            cnt++;
            if (cnt == m + 1) cnt = 1;
        }
    }

    return answer.substr(0, t);
}</pre>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-image size-full"><img decoding="async" width="661" height="692" src="https://lycos7560.com/wp-content/uploads/2023/03/image-30.png" alt="" class="wp-image-33825" srcset="https://lycos7560.com/wp-content/uploads/2023/03/image-30.png 661w, https://lycos7560.com/wp-content/uploads/2023/03/image-30-287x300.png 287w" sizes="(max-width: 661px) 100vw, 661px" /></figure>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5698326622209671" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5698326622209671" data-ad-slot="4245812909"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<p>The post <a href="https://lycos7560.com/cpp/programmers/programmers-17687-3%ec%b0%a8-n%ec%a7%84%ec%88%98-%ea%b2%8c%ec%9e%84-2018-kakao-blind-recruitment/33817/">Programmers 17687 [3차] n진수 게임 [2018 KAKAO BLIND RECRUITMENT]</a> appeared first on <a href="https://lycos7560.com">어제와 내일의 나 그 사이의 이야기</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lycos7560.com/cpp/programmers/programmers-17687-3%ec%b0%a8-n%ec%a7%84%ec%88%98-%ea%b2%8c%ec%9e%84-2018-kakao-blind-recruitment/33817/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
