<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>laetipark (박동훈)</title><link>http://blex.me/@laetipark</link><description>es laetus🙂</description><atom:link href="http://blex.me/rss/@laetipark" rel="self"/><language>ko</language><lastBuildDate>Wed, 19 Feb 2025 13:39:03 +0900</lastBuildDate><image><url>/resources/media/images/avatar/63/laetipark/aFBUR.jpg</url><title>laetipark (박동훈)</title><link>http://blex.me/@laetipark</link></image><item><title>구글 SEO(검색엔진 최적화) 개념 정리</title><link>http://blex.me/@laetipark/%EA%B5%AC%EA%B8%80-seo%EA%B2%80%EC%83%89%EC%97%94%EC%A7%84-%EC%B5%9C%EC%A0%81%ED%99%94%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A0%95%EB%A6%AC</link><description>&lt;h2 id="seo란"&gt;SEO란?&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SEO(Search Engine Optimization) : 웹사이트가 검색 결과에 더 잘 보이도록 최적화하는 과정&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;검색엔진 최적화 작업으로 검색로봇이 웹사이트를 방문했을 때, 검색 결과 상단에 노출될 수 있도록 해당 사이트의 구조, 본문 콘텐츠, 링크 등을 개선하는 작업&lt;/li&gt;
&lt;li&gt;즉, 사이트를 검색 엔진이 선호하는 타입으로 최적화하는 작업&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PPC(Pay per click) : 클릭 당 지불이라는 뜻으로 보통 검색 광고를 뜻함 CPC&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="seo를-하는-이유"&gt;SEO를 하는 이유&lt;/h2&gt;&lt;p&gt;&lt;img class="lazy" data-src="/resources/media/images/content/2025/1/17/202511716_KFzmOm4lu89aCbXtzXYp.png" src="/resources/media/images/content/2025/1/17/202511716_KFzmOm4lu89aCbXtzXYp.png.preview.jpg" alt="SEO를 하는 이유"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;이미 관심이 가는 단어를 결정하고 검색창에 입력한 단어&lt;/strong&gt;는 &lt;strong&gt;서비스 이용 또는 구매로 연결될 가능성이 높음&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;인터넷 잠재 고객들은 광고로 표시된 검색 결과보다 &lt;strong&gt;자연 검색 결과를 더 신뢰&lt;/strong&gt;하기 때문에 브랜드 신뢰도를 올리고 정확한 마케팅을 할 수 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class="lazy" data-src="/resources/media/images/content/2025/1/17/202511717_P9mauITin8JCoM28cBMh.png" src="/resources/media/images/content/2025/1/17/202511717_P9mauITin8JCoM28cBMh.png.preview.jpg" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PPC는 한정된 클릭 수 당 고정 비용 계속 발생&lt;/li&gt;
&lt;li&gt;SEO는 검색순위가 향상될수록 Organic Traffic(자연 발생 트래픽) 당 비용이 감소하여 기간이 지날 수록 ROI(Return on Investment)가 극대화&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="seo-작업-3-요소"&gt;SEO 작업 3 요소&lt;/h2&gt;&lt;p&gt;&lt;img class="lazy" data-src="/resources/media/images/content/2025/1/25/202512517_lGyV4fICqqw8iorEdeI1.jpg" src="/resources/media/images/content/2025/1/25/202512517_lGyV4fICqqw8iorEdeI1.jpg.preview.jpg" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On-Server SEO(Technical SEO) : 서버 단위에서 검색 최적화&lt;/li&gt;
&lt;li&gt;On-Page SEO(Body Optimization) : 웹페이지 HTML소스의 검색 최적화&lt;/li&gt;
&lt;li&gt;Off-Page SEO(Link Building) : 웹사이트로의 링크의 다양화 및 고급화&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="on-serveron-page-seo"&gt;On-Server(On-Page) SEO&lt;/h4&gt;&lt;p&gt;&lt;img class="lazy" data-src="/resources/media/images/content/2025/1/29/202512921_nKTyB4GrZlR7v58D7EZ7.jpg" src="/resources/media/images/content/2025/1/29/202512921_nKTyB4GrZlR7v58D7EZ7.jpg.preview.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;웹사이트의 형식, 주소(URL) 체계, 폴더/파일 네이밍 체계, 사이트의 속도, 웹표준 규약, Javascript 등 프로그래밍 요소, XML 사이트맵의 존재 유무, Robot 태그 등 서버에서의 웹사이트 규칙, 규약, 형태 등을 최적화하는 작업&lt;/p&gt;
&lt;h6 id="웹-사이트-형식-주소-체계"&gt;웹 사이트 형식, 주소 체계&lt;/h6&gt;&lt;ul&gt;
&lt;li&gt;URL 주소 길이 : 최대한 짧게하며, &lt;code&gt;Depth(/)는 2~4&lt;/code&gt; 추천&lt;/li&gt;
&lt;li&gt;URL에 &lt;code&gt;특정 Parameter(!$#% 등 특수 기호)&lt;/code&gt; 사용 금지&lt;/li&gt;
&lt;li&gt;페이지의 주제를 나타내는 &lt;code&gt;키워드 포함&lt;/code&gt;하고 &lt;code&gt;URL Rewriting&lt;/code&gt; 기법 활용
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;URL Rewriting&lt;/strong&gt; : URL 구조를 더 친화적이고 검색 엔진 친화적으로 수정하는 SEO 기법
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;example.com/page?id=123&lt;/code&gt;를 &lt;code&gt;example.com/product/shoes&lt;/code&gt;처럼 변환하는 작업&lt;/li&gt;
&lt;li&gt;가독성이 향상되며, 사용자 링크 공유/북마크에 용이하며, 중복 콘텐츠 문제가 감소됨&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;단어의 구분은 &lt;code&gt;언더바(_)&lt;/code&gt;가 아닌 &lt;code&gt;대쉬(-)&lt;/code&gt;사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="모바일-호환-및-페이지-속도-측정-pagesp"&gt;모바일 호환 및 페이지 속도 측정 : &lt;a href="https://pagespeed.web.dev/"&gt;PageSpeed Insights&lt;/a&gt;&lt;/h6&gt;&lt;ul&gt;
&lt;li&gt;웹페이지 URL 입력 후 모바일/데스크톱에서 호환성 및 페이지 속도 측정&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="웹표준-점검-httpsvalidatorw3or"&gt;웹표준 점검 : &lt;a href="https://validator.w3.org"&gt;https://validator.w3.org&lt;/a&gt;&lt;/h6&gt;&lt;ul&gt;
&lt;li&gt;브라우저가 다르더라도 잘 호환되어 보이는 정도를 점검
&lt;ul&gt;
&lt;li&gt;Address에 점검하고 싶은 주소 입력&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="깨진-링크-점검-httpsvalidatorw3"&gt;깨진 링크 점검 : &lt;a href="https://validator.w3.org/checklink"&gt;https://validator.w3.org/checklink&lt;/a&gt;&lt;/h6&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;404 Not Found&lt;/code&gt; 같은 링크는 세부 페이지까지 방문하여, 색인 작업하는 검색 로봇의 검색 활동을 중단시키는 원인&lt;/li&gt;
&lt;li&gt;Address에 점검하고 싶은 주소 입력&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="xml-사이트맵-제작"&gt;XML 사이트맵 제작&lt;/h6&gt;&lt;ul&gt;
&lt;li&gt;구글에 &lt;code&gt;xml sitemap generator&lt;/code&gt; 입력 후 &lt;code&gt;sitemap&lt;/code&gt; 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="사이트-파악-및-오류-등-개선-httpssea"&gt;사이트 파악 및 오류 등 개선 : &lt;a href="https://search.google.com/search-console/about"&gt;https://search.google.com/search-console/about&lt;/a&gt;&lt;/h6&gt;&lt;h4 id="on-page-seo"&gt;On-Page SEO&lt;/h4&gt;&lt;p&gt;&lt;img class="lazy" data-src="/resources/media/images/content/2025/2/19/202521913_O5CQD4hZmasSV1uIXrcQ.png" src="/resources/media/images/content/2025/2/19/202521913_O5CQD4hZmasSV1uIXrcQ.png.preview.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;웹페이지의 HTML 소스를 최적화 하여, 검색 엔진이 해당 페이지를 더 잘 이해할 수 있도록 하는 작업
실제 검색 엔진이 읽는 내용은 페이지에서 보이는 내용과 다르기 때문에, 페이지를 잘 읽어오면서 타이틀과 메타 설명문구, 그리고 본문에 주요 키워드에 대한 내용을 적절하게 넣어주어야 함&lt;/p&gt;
&lt;h6 id="제목title과-메타-설명meta-descri"&gt;제목(Title)과 메타 설명(Meta Description)&lt;/h6&gt;&lt;p&gt;&lt;img class="lazy" data-src="/resources/media/images/content/2025/2/19/202521911_TGzuwedsRvgsVkH4Mko6.png" src="/resources/media/images/content/2025/2/19/202521911_TGzuwedsRvgsVkH4Mko6.png.preview.jpg" alt="제목(Title)과 메타 설명(Meta Description)"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Title, Meta Tag&lt;/strong&gt; : 검색 엔진이 사이트 방문 시 가장 인식하는 텍스트로 태그 내 문구를 통해 해당 페이지의 주제어 및 관련 키워드를 파악&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Title&lt;/strong&gt;은 브라우저 상단에 &lt;strong&gt;제목&lt;/strong&gt;으로 표시되고, &lt;strong&gt;Meta Description&lt;/strong&gt;은 검색결과의 &lt;strong&gt;사이트 설명문구&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-html"&gt;&amp;lt;!-- title과 meta description 태그는 &amp;lt;html&amp;gt;의 &amp;lt;head&amp;gt;에 위치 --&amp;gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&amp;quot;ko&amp;quot;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;제목&amp;lt;/title&amp;gt;
    &amp;lt;meta name=&amp;quot;description&amp;quot; content=&amp;quot;설명&amp;quot; /&amp;gt;
    &amp;lt;meta name=&amp;quot;keywords&amp;quot; content=&amp;quot;키워드&amp;quot; /&amp;gt;
    &amp;lt;meta property=&amp;quot;og:title&amp;quot; content=&amp;quot;제목&amp;quot; /&amp;gt;
    &amp;lt;meta property=&amp;quot;og:description&amp;quot; content=&amp;quot;설명&amp;quot; /&amp;gt;
  &amp;lt;/head&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Title&lt;/strong&gt;
1. 소비자가 매력을 느낄만한 제목으로 작성하는 것이 검색에 유리
&lt;ol start="2"&gt;
&lt;li&gt;대상 키워드를 반드시 1회 포함(긴 타이틀의 경우 2회까지 가능하나 유의)
- 제목에 많은 내용이 들어있다면 유익한 정보가 없다고 인식할 수 있음
- 키워드가 &lt;strong&gt;앞으로 나올수록&lt;/strong&gt; 검색에 유리
- 키워드가 &lt;strong&gt;전체 밀도에서 많이 차지 할수록&lt;/strong&gt; 검색에 유리&lt;/li&gt;
&lt;li&gt;최대 문자 사용 수는 60자, 가능한 55자 내외로 작성&lt;/li&gt;
&lt;li&gt;페이지 별 각각 다른 Title을 작성&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Meta Description&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;클릭을 유도할 수 있는 매력적인 문구를 작성&lt;/li&gt;
&lt;li&gt;문자 250자(약 2줄)를 넘지 않도록 작성&lt;/li&gt;
&lt;li&gt;페이지 별로 각각 다른 Description을 작성&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;타이틀과 메타&lt;/strong&gt;는 페이지마다 다르게 작성하고 &lt;strong&gt;주요 키워드를 포함&lt;/strong&gt;시킨다.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="본문-text-최적화-작업"&gt;본문 Text 최적화 작업&lt;/h6&gt;&lt;ul&gt;
&lt;li&gt;웹 페이지 구조를, 검색엔진이 인식 할 수 있는 텍스트 콘텐츠 위주로 구성&lt;/li&gt;
&lt;li&gt;본문 내 &lt;code&gt;적절한 키워드 밀도&lt;/code&gt;가 중요, 가능한 앞에 키워드를 작성하는 것을 추천&lt;/li&gt;
&lt;li&gt;대상 키워드에 &amp;lt;H1&amp;gt; 또는 &amp;lt;H2&amp;gt; 태그 사용(&amp;lt;H1&amp;gt; 태그는 페이지 당 1회)
&lt;ul&gt;
&lt;li&gt;h 태그를 단계적으로 순차적으로 사용하는 것이 색인하는 데 좋음&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;주요 키워드 강조 방식 활용
&lt;img class="lazy" data-src="/resources/media/images/content/2025/2/19/202521911_Q7ucd2k3kcUQRAgsHuEJ.png" src="/resources/media/images/content/2025/2/19/202521911_Q7ucd2k3kcUQRAgsHuEJ.png.preview.jpg" alt="주요 키워드 강조 방식 표"&gt;&lt;/li&gt;
&lt;li&gt;이미지 alt 속성
&lt;pre&gt;&lt;code class="language-html"&gt;&amp;lt;img src=&amp;quot;이미지 주소&amp;quot; alt=&amp;quot;&amp;quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;이미지에 Alt 태그 사용은 이미지 검색 지원에 도움을 줌&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="사이트-분석"&gt;사이트 분석&lt;/h6&gt;&lt;ul&gt;
&lt;li&gt;Google Analytics: &lt;a href="https://marketingplatform.google.com/about/analytics/"&gt;https://marketingplatform.google.com/about/analytics/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="off-page-seo"&gt;Off-Page SEO&lt;/h4&gt;&lt;p&gt;웹 사이트 외부에서 수행하는 작업으로, 유명한 사이트에 자신의 사이트 링크를 많이 등록하는 작업을 주로 함&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Domain Authority(DA) &amp;amp; Page Authority(PA)
&lt;ul&gt;
&lt;li&gt;사이트(도메인)와 페이지의 품질 지수&lt;/li&gt;
&lt;li&gt;100점 만점에 가까울 수록 높은 품질&lt;/li&gt;
&lt;li&gt;내 사이트보다 품질 지수가 높은 사이트에 링크를 거는 것은 긍정적 영향을 받을 수 있음&lt;/li&gt;
&lt;li&gt;DA/PA 점수의 중장기적인 모니터링을 통해 사이트의 인기도를 측정&lt;/li&gt;
&lt;li&gt;구글 검색창에 “da pa checker” 입력 후 검색하여 품질 지수 확인 가능&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="참고"&gt;참고&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/pulse/on-server-seo%25EA%25B5%25AC%25EC%25A1%25B0%25EC%25A0%2581-%25EC%25B5%259C%25EC%25A0%2581%25ED%2599%2594-1%25EB%25B6%2580-jungmin-kwon/?trackingId=A568xVXPSSu5iwcf5jaAjg%3D%3D"&gt;On-Server SEO(구조적 최적화), Jungmin Kwon, LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://idearabbit.co.kr/%EA%B2%80%EC%83%89-%EC%97%94%EC%A7%84-%EC%B5%9C%EC%A0%81%ED%99%94-%EB%B0%A9%EB%B2%95/h-tag/"&gt;h 태그(h1~h6) 검색 엔진 최적화(SEO) 적용 방법 2025.ver, Opentime&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ditoday.com/%ED%83%80%EC%9D%B4%ED%8B%80-%EC%9A%94%EC%86%8Ctitle-tag%EC%9D%98-%EC%B5%9C%EC%A0%81%ED%99%94-%EB%B0%A9%EC%95%88/?ckattempt=1"&gt;타이틀 요소(title tag)의 최적화 방안, 김관식, 디아이 투데이&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 19 Feb 2025 13:39:03 +0900</pubDate><guid>http://blex.me/@laetipark/%EA%B5%AC%EA%B8%80-seo%EA%B2%80%EC%83%89%EC%97%94%EC%A7%84-%EC%B5%9C%EC%A0%81%ED%99%94%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A0%95%EB%A6%AC</guid></item><item><title>Javascript/Algorithm : 전위/중위/후위 표기법</title><link>http://blex.me/@laetipark/javascriptalgorithm-%EC%A0%84%EC%9C%84%EC%A4%91%EC%9C%84%ED%9B%84%EC%9C%84-%ED%91%9C%EA%B8%B0%EB%B2%95</link><description>&lt;h4 id="개요"&gt;개요&lt;/h4&gt;&lt;p&gt;&lt;img class="lazy" data-src="/resources/media/images/content/2024/6/7/20246713_4hl6vbxmHHZyjgVs3Gxk.png" src="/resources/media/images/content/2024/6/7/20246713_4hl6vbxmHHZyjgVs3Gxk.png.preview.jpg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;회사에서 간단한 &lt;strong&gt;실습 과제&lt;/strong&gt;로 &lt;code&gt;회사 솔루션의 에디터 내 계산기 기능&lt;/code&gt;을 구현하는 것이 주어졌다.
그래서 &lt;code&gt;전위&lt;/code&gt;, &lt;code&gt;중위&lt;/code&gt;, &lt;code&gt;후위 표기법&lt;/code&gt;에 대해 다시 공부하면서, &lt;code&gt;후위 표기법을 통한 계산&lt;/code&gt;으로 구현한 &lt;code&gt;Javascript 코드&lt;/code&gt;를 작성해보았다.&lt;/p&gt;
&lt;h4 id="중위-표기법"&gt;중위 표기법&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;중위 표기법(infix)&lt;/strong&gt; : &lt;code&gt;피연산자&lt;/code&gt; 사이 &lt;code&gt;연산자&lt;/code&gt;가 있는 형태로 일반적으로 사용하는 수식 표기법이다. 괄호와 연산자 우선순위를 고려한 다음 순서대로 연산이 이루어진다.
&lt;img class="lazy" data-src="/resources/media/images/content/2024/6/7/20246715_ofXwbEQIudSMeSNraEAE.png" src="/resources/media/images/content/2024/6/7/20246715_ofXwbEQIudSMeSNraEAE.png.preview.jpg" alt=""&gt;  &lt;br&gt;
&lt;code&gt;컴퓨터는 왼쪽부터 수식을 하나씩 읽어가기 때문&lt;/code&gt;에, 우선순위가 있는 &lt;code&gt;중위 표기법&lt;/code&gt;으로 구현하기 어려움이 있다. 그래서 &lt;code&gt;전위 표기법&lt;/code&gt;, &lt;code&gt;후위 표기법&lt;/code&gt;으로 변환한 후에 계산을 진행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="전위-표기법"&gt;전위 표기법&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;전위 표기법(prefix)&lt;/strong&gt; : &lt;code&gt;연산자&lt;/code&gt;를 먼저, &lt;code&gt;피연산자&lt;/code&gt;를 나중에 표기하는 방식
&lt;img class="lazy" data-src="/resources/media/images/content/2024/6/7/20246717_fXQXR2caFgzwJDmW313z.png" src="/resources/media/images/content/2024/6/7/20246717_fXQXR2caFgzwJDmW313z.png.preview.jpg" alt=""&gt;&lt;/li&gt;
&lt;li&gt;중위 표기법에서 전위 표기법 변환 (중위 표기법 : &lt;code&gt;1+2/3*(4+5)&lt;/code&gt;)
&lt;ol&gt;
&lt;li&gt;연산자 우선순위에 맞게 소괄호로 묶는다. &lt;code&gt;(1+((2/3)*(4+5)))&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;괄호 안에 있는 연산자들을 앞으로 옮긴다. &lt;code&gt;(+1(/*(23)+(45)))&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;괄호들을 모두 없애준다. &lt;code&gt;+1/*23+45&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="후위-표기법"&gt;후위 표기법&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;후위 표기법(postfix)&lt;/strong&gt; : &lt;code&gt;피연산자&lt;/code&gt;를 먼저, &lt;code&gt;연산자&lt;/code&gt;를 나중에 표기하는 방식
&lt;img class="lazy" data-src="/resources/media/images/content/2024/6/7/20246717_jz3Pd0UMvRHepW6PKjJ6.png" src="/resources/media/images/content/2024/6/7/20246717_jz3Pd0UMvRHepW6PKjJ6.png.preview.jpg" alt=""&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;중위 표기법에서 후위 표기법 변환 (중위 표기법 : &lt;code&gt;1+2/3*(4+5)&lt;/code&gt;)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;연산자 우선순위에 맞게 소괄호로 묶는다. &lt;code&gt;(1+((2/3)*(4+5)))&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;괄호 안에 있는 연산자들을 뒤로 옮긴다. &lt;code&gt;(1((23)/(45))+*+)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;괄호들을 모두 없애준다. &lt;code&gt;123/45+*+&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;스택&lt;/code&gt;을 이용한 중위 표기법에서 후위 표기법 변환 및 계산
&lt;img class="lazy" data-src="/resources/media/images/content/2024/6/8/2024680_Kz672o0wi5d8vRxTvMRu.png" src="/resources/media/images/content/2024/6/8/2024680_Kz672o0wi5d8vRxTvMRu.png.preview.jpg" alt=""&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;피연산자&lt;/strong&gt;는 &lt;code&gt;output&lt;/code&gt;에, &lt;strong&gt;연산자&lt;/strong&gt;는 &lt;code&gt;operator stack(연산자 스택)&lt;/code&gt;에 &lt;code&gt;push&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;탐색한 연산자&lt;/strong&gt;가 &lt;strong&gt;operator stack top에 있는 연산자&lt;/strong&gt;보다 우선순위가 같거나 낮은지 확인&lt;/li&gt;
&lt;li&gt;우선순위가 같거나 낮다면 &lt;strong&gt;operator stack top에 있는 연산자&lt;/strong&gt;를 &lt;code&gt;pop&lt;/code&gt;하여 &lt;code&gt;output&lt;/code&gt;에 &lt;code&gt;push&lt;/code&gt;, &lt;code&gt;operator stack&lt;/code&gt;에 &lt;strong&gt;탐색한 연산자&lt;/strong&gt;를 &lt;code&gt;push&lt;/code&gt;하는 방식&lt;/li&gt;
&lt;li&gt;후위 표기법 계산은 왼쪽부터 &lt;code&gt;stack&lt;/code&gt;에 쌓으면서 &lt;strong&gt;연산자&lt;/strong&gt;가 탐색되면, &lt;code&gt;stack&lt;/code&gt;에 쌓여있는 &lt;strong&gt;두 개의 피연산자&lt;/strong&gt;를 &lt;code&gt;pop&lt;/code&gt;하여 해당 연산 진행한 후 다시 &lt;code&gt;stack&lt;/code&gt;에 &lt;code&gt;push&lt;/code&gt;하는 방식
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;연산1(2/3)&lt;/code&gt; =&amp;gt; &lt;code&gt;연산2(4+5)&lt;/code&gt; =&amp;gt; &lt;code&gt;연산3(연산1*연산2)&lt;/code&gt; =&amp;gt; &lt;code&gt;연산4(연산3+1)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="중위-표기법을-후위-표기법으로-변환-코드"&gt;중위 표기법을 후위 표기법으로 변환 코드&lt;/h6&gt;&lt;pre&gt;&lt;code class="language-typescript"&gt;const infix = `[&amp;quot;1&amp;quot;, &amp;quot;+&amp;quot;, &amp;quot;2&amp;quot;,  &amp;quot;/&amp;quot;, &amp;quot;3&amp;quot;, &amp;quot;*&amp;quot;, &amp;quot;(&amp;quot;, &amp;quot;4&amp;quot;, &amp;quot;+&amp;quot;, &amp;quot;5&amp;quot;, &amp;quot;)&amp;quot;]`; // 중위 표기법

// 중위 표기법을 후위 표기법으로 전환
let output = [];
let operatorStack = [];
let operators = {
  &amp;quot;+&amp;quot;: 1,
  &amp;quot;‑&amp;quot;: 1,
  &amp;quot;*&amp;quot;: 2,
  &amp;quot;/&amp;quot;: 2,
  &amp;quot;%&amp;quot;: 2,
  &amp;quot;^&amp;quot;: 3, // 제곱 연산자
  &amp;quot;=&amp;quot;: 0,
};

for (let i = 0; i &amp;lt; infix.length; i++) {
  let token = infix[i];

  if (!isNaN(Number(token || NaN))) { // 피연산자(숫자)인 경우 output에 push
    output.push(token);
  } else if (token in operators) { // 연산자인 경우
    while (
      operatorStack.length &amp;gt; 0 &amp;amp;&amp;amp;
      operators[operatorStack[operatorStack.length - 1]] &amp;gt;=
        operators[token] &amp;amp;&amp;amp;
      operatorStack[operatorStack.length - 1] !== &amp;quot;(&amp;quot;
    ) { // operatorStack top에 연산자 우선순위가 token보다 높은 경우 pop하여 output에 push
      output.push(operatorStack.pop());
    }
    operatorStack.push(token); // operatorStack에 push
  } else if (token === &amp;quot;(&amp;quot;) { // 여는 괄호인 경우 operatorStack에 push
    operatorStack.push(token);
  } else if (token === &amp;quot;)&amp;quot;) { // 닫는 괄호인 경우 여는 괄호가 나오거나 operatorStack가 비워질 때까지 operatorStack에서 pop 후 output에 push
    while (
      operatorStack.length &amp;gt; 0 &amp;amp;&amp;amp;
      operatorStack[operatorStack.length - 1] !== &amp;quot;(&amp;quot;
    ) {
      output.push(operatorStack.pop());
    }
    operatorStack.pop();
  }
}

while (operatorStack.length &amp;gt; 0) {  // operatorStack에 남아있는 연산자들을 output에 push
  output.push(operatorStack.pop());
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h6 id="후위-표기법-계산-코드"&gt;후위 표기법 계산 코드&lt;/h6&gt;&lt;pre&gt;&lt;code class="language-typescript"&gt;for (let i = 0; i &amp;lt; res.length; i++) {
  let token = res[i];
  if (!isNaN(Number(token))) { // 피연산자(숫자)인 경우 stack에 push
    stack.push(Number(token));
  } else { // 연산자인 경우 stack에 있는 두 개의 수를 pop하여, 해당 연산 수행 후 stack에 다시 push
    let operand2 = stack.pop();
    let operand1 = stack.pop();

    switch (token) {
      case &amp;quot;+&amp;quot;:
        stack.push(operand1 + operand2);
        break;
      case &amp;quot;‑&amp;quot;:
        stack.push(operand1 - operand2);
        break;
      case &amp;quot;*&amp;quot;:
        stack.push(operand1 * operand2);
        break;
      case &amp;quot;/&amp;quot;:
        stack.push(operand1 / operand2);
        break;
      case &amp;quot;%&amp;quot;:
        stack.push(operand1 % operand2);
        break;
      case &amp;quot;^&amp;quot;: // 제곱 연산자
        stack.push(operand1 ** operand2);
        break;
    }
  }
}

const answer = stack.pop(); // 후위 표기법 계산 결과
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Sat, 08 Jun 2024 01:17:32 +0900</pubDate><guid>http://blex.me/@laetipark/javascriptalgorithm-%EC%A0%84%EC%9C%84%EC%A4%91%EC%9C%84%ED%9B%84%EC%9C%84-%ED%91%9C%EA%B8%B0%EB%B2%95</guid></item><item><title> 프로그래머스/Javascript : 기초 문제 22일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-22%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="0-떼기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181847"&gt;0 떼기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;정수로 이루어진 문자열 &lt;code&gt;n_str&lt;/code&gt;이 주어질 때, &lt;code&gt;n_str&lt;/code&gt;의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;2 ≤ &lt;code&gt;n_str&lt;/code&gt; ≤ 10&lt;/li&gt;
&lt;li&gt;&lt;code&gt;n_str&lt;/code&gt;이 &amp;quot;0&amp;quot;으로만 이루어진 경우는 없습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (nStr) =&amp;gt; {
  return String(Number(nStr));
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="두-수의-합"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181846"&gt;두 수의 합&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;0 이상의 두 정수가 문자열 &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;로 주어질 때, &lt;code&gt;a&lt;/code&gt; + &lt;code&gt;b&lt;/code&gt;의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;a&lt;/code&gt;의 길이 ≤ 100,000&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;b&lt;/code&gt;의 길이 ≤ 100,000&lt;/li&gt;
&lt;li&gt;&lt;code&gt;a&lt;/code&gt;와 &lt;code&gt;b&lt;/code&gt;는 숫자로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;a&lt;/code&gt;와 &lt;code&gt;b&lt;/code&gt;는 정수 0이 아니라면 0으로 시작하지 않습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (a, b) =&amp;gt; {
  return String(BigInt(a) + BigInt(b));
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="문자열로-변환"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181845"&gt;문자열로 변환&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 &lt;code&gt;n&lt;/code&gt;이 주어질 때, &lt;code&gt;n&lt;/code&gt;을 문자열로 변환하여 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;n&lt;/code&gt; ≤ 10000&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (n) =&amp;gt; {
  return String(n);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열의-원소-삭제하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181844"&gt;배열의 원소 삭제하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;과 &lt;code&gt;delete_list&lt;/code&gt;가 있습니다. &lt;code&gt;arr&lt;/code&gt;의 원소 중 &lt;code&gt;delete_list&lt;/code&gt;의 원소를 모두 삭제하고 남은 원소들은 기존의 &lt;code&gt;arr&lt;/code&gt;에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 ≤ 1,000&lt;/li&gt;
&lt;li&gt;&lt;code&gt;arr&lt;/code&gt;의 원소는 모두 서로 다릅니다.&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;delete_list&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;delete_list&lt;/code&gt;의 원소 ≤ 1,000&lt;/li&gt;
&lt;li&gt;&lt;code&gt;delete_list&lt;/code&gt;의 원소는 모두 서로 다릅니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (arr, deleteList) =&amp;gt; {
  return arr.filter((num) =&amp;gt; !deleteList.includes(num));
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="부분-문자열인지-확인하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181843"&gt;부분 문자열인지 확인하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;부분 문자열이란 문자열에서 연속된 일부분에 해당하는 문자열을 의미합니다. 예를 들어, 문자열 &amp;quot;ana&amp;quot;, &amp;quot;ban&amp;quot;, &amp;quot;anana&amp;quot;, &amp;quot;banana&amp;quot;, &amp;quot;n&amp;quot;는 모두 문자열 &amp;quot;banana&amp;quot;의 부분 문자열이지만, &amp;quot;aaa&amp;quot;, &amp;quot;bnana&amp;quot;, &amp;quot;wxyz&amp;quot;는 모두 &amp;quot;banana&amp;quot;의 부분 문자열이 아닙니다.&lt;/p&gt;
&lt;p&gt;문자열 &lt;code&gt;my_string&lt;/code&gt;과 &lt;code&gt;target&lt;/code&gt;이 매개변수로 주어질 때, &lt;code&gt;target&lt;/code&gt;이 문자열 &lt;code&gt;my_string&lt;/code&gt;의 부분 문자열이라면 1을, 아니라면 0을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;은 영소문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;target&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;&lt;code&gt;target&lt;/code&gt;은 영소문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (myString, target) =&amp;gt; {
  return myString.includes(target) ? 1 : 0;
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Tue, 21 May 2024 16:14:40 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-22%EC%9D%BC%EC%B0%A8</guid></item><item><title>Javascript : 이벤트와 이벤트 위임</title><link>http://blex.me/@laetipark/javascript-%EC%9D%B4%EB%B2%A4%ED%8A%B8%EC%99%80-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%9C%84%EC%9E%84</link><description>&lt;h4 id="이벤트"&gt;이벤트&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;이벤트: DOM에서 발생한 어떤 사건(클릭, 입력 등)으로 이벤트를 통해 원하는 동작을 할 수 있음&lt;/li&gt;
&lt;li&gt;이벤트 흐름: target에 이벤트가 발생하는 경우 상위부터 target으로, target부터 다시 상위로 이벤트가 발생하며, catch를 하여 이벤트에 대한 원하는 동작을 설정할 수 있음
&lt;img class="lazy" data-src="/resources/media/images/content/2024/5/21/202452111_qJd4mnJeqIthXyw4OaYs.jpg" src="/resources/media/images/content/2024/5/21/202452111_qJd4mnJeqIthXyw4OaYs.jpg.preview.jpg" alt=""&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bubbling&lt;/strong&gt;: &lt;code&gt;target&lt;/code&gt;에서 이벤트가 발생하면 target 이벤트가 동작하고, 상위 요소 핸들러가 순차적으로 동작&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capturing&lt;/strong&gt;: &lt;code&gt;target&lt;/code&gt;에서 이벤트가 발생하면 최상위 요소에서부터 target으로 순차적으로 이벤트 동작&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;addEventListener(&lt;code&gt;type&lt;/code&gt;, &lt;code&gt;listener&lt;/code&gt;, &lt;code&gt;useCapture&lt;/code&gt;);&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;type&lt;/code&gt;: 이벤트 유형(click, mousemove, mousedown 등)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;listener&lt;/code&gt;: 이벤트를 수신할 객체로, 콜백 함수 또는 handleEvent() 메서드를 포함하는 객체&lt;/li&gt;
&lt;li&gt;&lt;code&gt;option&lt;/code&gt;: 이벤트 수신기 특징을 지정할 수 있는 객체
&lt;ul&gt;
&lt;li&gt;capture(기본값: false): &lt;code&gt;false&lt;/code&gt;시 &lt;code&gt;bubbling&lt;/code&gt;, &lt;code&gt;true&lt;/code&gt;시 &lt;code&gt;catpturing&lt;/code&gt;으로 설정&lt;/li&gt;
&lt;li&gt;once(기본값: false): 수신기 최대 한 번 동작하도록 설정&lt;/li&gt;
&lt;li&gt;passive: 수신기 내 &lt;code&gt;preventDefault()&lt;/code&gt;를 호출하지 않는 여부&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="이벤트-위임"&gt;이벤트 위임&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;이벤트 위임&lt;/strong&gt;: 하위 모든 요소에 이벤트를 등록하지 않고, &lt;code&gt;상위 요소 한 개에 이벤트를 등록&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;addEventListener&lt;/code&gt;를 여러 번 호출하는 것을 방지하기 때문에 성능 향상과 유지 보수에 좋음
&lt;img class="lazy" data-src="/resources/media/images/content/2024/5/21/202452111_6V0n8rz29nIfQ3urf2kf.png" src="/resources/media/images/content/2024/5/21/202452111_6V0n8rz29nIfQ3urf2kf.png.preview.jpg" alt=""&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;&amp;lt;html&amp;gt;
    &amp;lt;body&amp;gt;
        &amp;lt;ul&amp;gt;
            &amp;lt;li&amp;gt;1&amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;2&amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;3&amp;lt;/li&amp;gt;
        &amp;lt;/ul&amp;gt;
        &amp;lt;script&amp;gt;
          // 이벤트 위임을 사용하지 않을 경우, addEventListener이 세 번 호출 됨
            // for (const item of document.querySelectorAll(&amp;quot;li&amp;quot;)) {
            //   item.addEventListener(&amp;quot;click&amp;quot;, (e) =&amp;gt; {
            //      console.log(e.target.innerText);
            //   });
            // }
            
            // 이벤트 위임을 사용한 코드
            const list = document.querySelector(&amp;quot;ul&amp;quot;);

            list.addEventListener(&amp;quot;click&amp;quot;, (e) =&amp;gt; {
                if (e.target.tagName === &amp;quot;LI&amp;quot;) {
                    console.log(e.target.innerText);
                }
            });
        &amp;lt;/script&amp;gt;
    &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="이벤트-관련-함수"&gt;이벤트 관련 함수&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;event.preventDefault()&lt;/code&gt;: target의 고유한 동작을 중지 시키는 함수&lt;/li&gt;
&lt;li&gt;&lt;code&gt;event.stopPropagation()&lt;/code&gt;: target의 이벤트가 상위 요소로 전달되는 것을 방지, 즉 버블링을 중단시키는 함수&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 21 May 2024 11:38:51 +0900</pubDate><guid>http://blex.me/@laetipark/javascript-%EC%9D%B4%EB%B2%A4%ED%8A%B8%EC%99%80-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%9C%84%EC%9E%84</guid></item><item><title>Typescript : 타입스크립트 언어의 특징과 장단점</title><link>http://blex.me/@laetipark/typescript-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%96%B8%EC%96%B4%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%9E%A5%EB%8B%A8%EC%A0%90</link><description>&lt;h4 id="typescript"&gt;Typescript&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;타입스크립트(Typescript): Microsoft에서 개발한 자바스크립트(Javascript) 기반 언어&lt;br&gt;
&lt;img class="lazy" data-src="/resources/media/images/content/2024/5/21/20245219_RWA2xkdu1GVVuALdJm9i.png" src="/resources/media/images/content/2024/5/21/20245219_RWA2xkdu1GVVuALdJm9i.png.preview.jpg" alt=""&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;정적 타입 언어&lt;/strong&gt;: 자바스크립트에 정적 타입 문법을 추가한 상위 언어, 반면 자바스크립트는 런타임에 따라 결정되는 동적 타입 언어&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-typescript"&gt;// 타입을 명시적으로 선언
const foo: string;
const bar: number;
const baz: boolean;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;컴파일 언어&lt;/strong&gt;: 자바스크립트로 컴파일 과정을 거친 후 실행할 수 있음, 반면 자바스크립트는 코드를 읽어가며 명령을 바로 처리하는 &lt;code&gt;인터프리터 언어&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;그 외 &lt;code&gt;Generic&lt;/code&gt;, &lt;code&gt;Enum&lt;/code&gt;, &lt;code&gt;Interface&lt;/code&gt; 등의 기능들이 있음&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="타입스크립트-장단점"&gt;타입스크립트 장단점&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;장점&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;타입(Type) 시스템&lt;/strong&gt;: 컴파일 과정에서 타입을 사용하기 때문에 에러를 예방할 수 있으며, 디버깅이 가능함&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;높은 생산성&lt;/strong&gt;: 객체 필드나 함수 매개변수로 들어오는 변수의 이름과 자료형 확인을 쉽게 할 수 있어, 자바스크립트보다 코드 작성을 쉽고 직관적으로 할 수 있음&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;자바스크립트의 슈퍼셋&lt;/strong&gt;: 자바스크립트 프로젝트 코드를 수정하여, 타입스크립트로 점진적으로 적용할 수 있음
&lt;ul&gt;
&lt;li&gt;슈퍼셋(Superset): 특정한 언어의 모든 기능을 포함하면서, 다른 기능까지 포함하도록 향상 또는 확장된 것&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;단점&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;초기 세팅이 어려움&lt;/strong&gt;: 자바스크립트 엔진에서 실행되기 때문에, 따로 설치해야하는 모듈이나 컴파일을 위한 옵션(tsconfig.json)을 설정해주어야 함&lt;br&gt;
&lt;img class="lazy" data-src="/resources/media/images/content/2024/5/21/20245219_qrU58iBoN8SQdKQ2BBU0.png" src="/resources/media/images/content/2024/5/21/20245219_qrU58iBoN8SQdKQ2BBU0.png.preview.jpg" alt="tsconfig.json"&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;타입 지정으로 인한 생산성 저하&lt;/strong&gt;: 타입의 지정이나, interface, class등에 익숙하지 않은 경우 생산성이 저하될 수 있음&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="관련-포스트"&gt;관련 포스트&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blex.me/@laetipark/nodejs-%EA%B5%90%EA%B3%BC%EC%84%9C-2-%EC%95%8C%EC%95%84%EB%91%90%EC%96%B4%EC%95%BC-%ED%95%A0-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8"&gt;주요 ES6 문법(ES6)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="참고-자료"&gt;참고 자료&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dhdnjswo5000.tistory.com/56"&gt;(JavaScript)ES6와 TypeScript의 공통점과 차이점, Tistory, 흥부의 개발블로그&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.elancer.co.kr/blog/view?seq=183#:~:text=TypeScript%EB%9E%80&amp;amp;text=TypeScript%EB%8A%94%20JavaScript%EC%9D%98%20%EC%8A%88%ED%8D%BC,%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%90%98%EC%96%B4%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4."&gt;TypeScript 사용하는 이유, 이랜서&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Tue, 21 May 2024 09:37:03 +0900</pubDate><guid>http://blex.me/@laetipark/typescript-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%96%B8%EC%96%B4%EC%9D%98-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%9E%A5%EB%8B%A8%EC%A0%90</guid></item><item><title>Javascript : 프로토타입과 this, call, apply, bind</title><link>http://blex.me/@laetipark/javascript-%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85%EA%B3%BC-this-call-apply-bind</link><description>&lt;h4 id="프로토타입"&gt;프로토타입&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;javascript에는 클래스라는 개념이 없기 때문에, 자신이 다른 객체의 원형이 되는 객체를 의미&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;// Person에 대한 프로토타입 생성
function Person() {
  this.name;
  this.age;
  this.job;
}

// Person 프로토타입에 대한 setData 함수 생성
Person.prototype.setData = (name, age, job) =&amp;gt; {
  this.name = name;
  this.age = age;
  this.job = job;
};

// Person 프로토타입에 대한 setData 함수 생성
Person.prototype.introduce = (name, age, job) =&amp;gt; {
  console.log(
    `&amp;quot;안녕하세요 저는 ${this.name}이라고 합니다! 나이는 ${this.age}이고, 직업은 ${this.job}입니다.&amp;quot;`
  );
};

// Person에 대한 객체 생성(pdh 기준으로 상위 객체는 Person)
const pdh = new Person();
pdh.setData(&amp;quot;DongHun Park&amp;quot;, &amp;quot;26&amp;quot;, &amp;quot;programmer&amp;quot;);
pdh.introduce();
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;프로토타입 체인: 생성된 객체가 프로토타입(객체)과 체인에 걸려있는 것처럼 연결된 형태&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="this"&gt;this&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;this: 객체의 함수에서 호출한 객체를 가리키는 키워드
&lt;ul&gt;
&lt;li&gt;호출한 객체가 없을 경우, default는 window&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;...

// (2) pdh 객체가 introduce 함수를 호출할 경우, this 객체는 pdh
Person.prototype.introduce = (name, age, job) =&amp;gt; {
  console.log(
    `&amp;quot;안녕하세요 저는 ${this.name}이라고 합니다! 나이는 ${this.age}이고, 직업은 ${this.job}입니다.&amp;quot;`
  );
};

...
// (1) pdh 객체가 introduce 함수를 호출
pdh.introduce();
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id="call-apply-bind"&gt;call, apply, bind&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;프로토타입 함수에 대해 this를 직접 지정해 주는 기능을 하는 함수&lt;/li&gt;
&lt;li&gt;call: 함수를 바로 호출하면서 매개변수에 인자를 하나씩 전달&lt;/li&gt;
&lt;li&gt;apply: 함수를 바로 호출하면서 매개변수를 배열 값으로 전달&lt;/li&gt;
&lt;li&gt;bind: 함수를 바로 호출하지 않고, 매개변수를 바인딩한 새로운 함수를 반환&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;...

Person.prototype.introduce = (name, age, job) =&amp;gt; {
  console.log(
    `&amp;quot;안녕하세요 저는 ${this.name}이라고 합니다! 나이는 ${this.age}이고, 직업은 ${this.job}입니다.&amp;quot;`
  );
};

const pdh = new Person();
pdh.setData(&amp;quot;DongHun Park&amp;quot;, &amp;quot;26&amp;quot;, &amp;quot;programmer&amp;quot;);

// pdh객체를 넣은 상태에서 introduce 함수를 바로 실행
introduce.call(pdh);

// pdh객체를 넣은 상태에서 introduce 함수 바인딩
const introducePDH = introduce.bind(pdh)
introducePDH; // 바인딩한 함수인 introducePDH 실행
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Thu, 09 May 2024 13:28:15 +0900</pubDate><guid>http://blex.me/@laetipark/javascript-%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85%EA%B3%BC-this-call-apply-bind</guid></item><item><title>Javascript : var, let, const, 스코프</title><link>http://blex.me/@laetipark/javascript-var-let-const-%EC%8A%A4%EC%BD%94%ED%94%84</link><description>&lt;h4 id="var"&gt;var&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;var(variable): 데이터 타입을 지정할 필요가 없는 변수 선언 방식
&lt;ul&gt;
&lt;li&gt;함수 범위로 사용되며, 함수 또는 프로그램(전역)이 실행되면 생성되고, 종료되면 소멸되는 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;var globalVar = &amp;quot;hello&amp;quot;; // 전역 변수

function show(){
    var localVar = &amp;quot;hi&amp;quot;; // 지역 변수

    console.log(localVar); // hi
    console.log(globalVar); // hello
}

console.log(localVar); // error undefined
console.log(globalVar); // hello
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="let-const"&gt;let, const&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;var 사용의 문제점
&lt;ul&gt;
&lt;li&gt;같은 이름으로 재정의 또는 재선언이 가능하며, 마지막 값으로 받는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;//변수 선언
var x = &amp;quot;hello&amp;quot;;

// 재정의
x = &amp;quot;world&amp;quot;;

// 재선언
var x = &amp;quot;hello world&amp;quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;함수 스코프&lt;/strong&gt;이기 때문에, 함수(전역) 내에 있는 동일한 변수는 재선언이 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;var say = &amp;quot;hello&amp;quot;;
if (true) {
    var say = &amp;quot;hi&amp;quot;;
}

console.log(say); // hi 
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;변수 선언하기 전에 참조할 경우 undefined를 반환(Hoisting)
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hoisting(호이스팅)&lt;/strong&gt;: 변수나 함수를 실행 이전(Runtime)에 미리 동작 시키거나 생성하는 것&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="language-javascript"&gt;console.log(say) // 호이스팅으로 인한 undefined 출력
var say = &amp;quot;hello&amp;quot;;
console.log(say); // hello
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;let: &lt;strong&gt;가변 변수&lt;/strong&gt;로 재정의할 수 있지만, 재선언이 불가능&lt;/li&gt;
&lt;li&gt;const: &lt;strong&gt;불변 변수&lt;/strong&gt;로 재정의하거나 재선언이 불가능&lt;/li&gt;
&lt;li&gt;let와 const의 특징: 블록(block) 단위 스코프&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="스코프"&gt;스코프&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;스코프: 변수가 접근할 수 있는 유효 범위&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;전역 스코프: 코드 모든 곳에서 변수를 참조할 수 있음&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;지역 스코프: 코드 특정 부분에서만 사용 가능한 변수&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;함수 스코프: 함수를 기준으로 범위가 구분&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;블록 스코프: 중괄호를 기준으로 범위가 구분&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;스코프 규칙: 바깥쪽 스코프에서 안쪽 스코프로 접근할 수 있으나, 반대로는 불가능하며, 스코프는 중첩이 가능함&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;정적 스코프(렉시컬 스코프): 함수 선언 위치에 따라 상위 스코프가 결정, javascript의 특징&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;동적 스코프: 함수 호출 위치에 따라 상위 스코프가 결정&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 08 May 2024 13:02:09 +0900</pubDate><guid>http://blex.me/@laetipark/javascript-var-let-const-%EC%8A%A4%EC%BD%94%ED%94%84</guid></item><item><title>프로그래머스/Javascript : 기초 문제 21일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-21%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="배열의-길이를-2의-거듭제곱으로-만들기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181857"&gt;배열의 길이를 2의 거듭제곱으로 만들기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;이 매개변수로 주어집니다. &lt;code&gt;arr&lt;/code&gt;의 길이가 2의 정수 거듭제곱이 되도록 &lt;code&gt;arr&lt;/code&gt; 뒤에 정수 0을 추가하려고 합니다. &lt;code&gt;arr&lt;/code&gt;에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 ≤ 1,000&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = arr =&amp;gt; {
  let length = arr.length;
  let answer = arr;
  let count = 0;

  while (true) {
    length = Math.round(length / 2);

    if (length === 1) {
      break;
    }
    count++;
  }

  if (2 ** count &amp;lt; arr.length) {
    for (let i = arr.length; i &amp;lt; 2 ** (count + 1); i++) {
      answer.push(0);
    }
  }

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열-비교하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181856"&gt;배열 비교하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.&lt;/p&gt;
&lt;p&gt;두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
두 정수 배열 &lt;code&gt;arr1&lt;/code&gt;과 &lt;code&gt;arr2&lt;/code&gt;가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 &lt;code&gt;arr2&lt;/code&gt;가 크다면 -1, &lt;code&gt;arr1&lt;/code&gt;이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr1&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr2&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr1&lt;/code&gt;의 원소 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr2&lt;/code&gt;의 원소 ≤ 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;문제에서 정의한 배열의 대소관계가 일반적인 프로그래밍 언어에서 정의된 배열의 대소관계와 다를 수 있는 점에 유의해주세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (arr1, arr2) =&amp;gt; {
  if (arr1.length &amp;gt; arr2.length) {
    return 1;
  } else if (arr1.length &amp;lt; arr2.length) {
    return -1;
  } else {
    const arr1Sum = arr1.reduce((acc, cur) =&amp;gt; acc + cur, 0);
    const arr2Sum = arr2.reduce((acc, cur) =&amp;gt; acc + cur, 0);
    if (arr1Sum &amp;gt; arr2Sum) {
      return 1;
    } else if (arr1Sum &amp;lt; arr2Sum) {
      return -1;
    } else {
      return 0;
    }
  }
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="문자열-묶기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181855"&gt;문자열 묶기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 배열 &lt;code&gt;strArr&lt;/code&gt;이 주어집니다. &lt;code&gt;strArr&lt;/code&gt;의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;strArr&lt;/code&gt;의 길이 ≤ 100,000
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;strArr&lt;/code&gt;의 원소의 길이 ≤ 30&lt;/li&gt;
&lt;li&gt;&lt;code&gt;strArr&lt;/code&gt;의 원소들은 알파벳 소문자로 이루어진 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (strArr) =&amp;gt; {
  const arr = {};
  strArr.map(str =&amp;gt; {
    if (!arr[str.length]) {
      arr[str.length] = [];
    }
    arr[str.length].push(str);
  });
  return Math.max(...Object.values(arr).map(arr =&amp;gt; arr.length));
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="열의-길이에-따라-다른-연산하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181854"&gt;열의 길이에 따라 다른 연산하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;과 정수 &lt;code&gt;n&lt;/code&gt;이 매개변수로 주어집니다. &lt;code&gt;arr&lt;/code&gt;의 길이가 홀수라면 &lt;code&gt;arr&lt;/code&gt;의 모든 짝수 인덱스 위치에 &lt;code&gt;n&lt;/code&gt;을 더한 배열을, &lt;code&gt;arr&lt;/code&gt;의 길이가 짝수라면 &lt;code&gt;arr&lt;/code&gt;의 모든 홀수 인덱스 위치에 &lt;code&gt;n&lt;/code&gt;을 더한 배열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 ≤ 1,000
-1 ≤ &lt;code&gt;n&lt;/code&gt; ≤ 1,000&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (arr, n) =&amp;gt; {
  if (arr.length % 2 === 0) {
    return arr.map((item, index) =&amp;gt; index % 2 === 0 ? item : item + n);
  } else {
    return arr.map((item, index) =&amp;gt; index % 2 === 1 ? item : item + n);
  }
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="뒤에서-5등까지"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181853"&gt;뒤에서 5등까지&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;정수로 이루어진 리스트 num_list가 주어집니다. num_list에서 가장 작은 5개의 수를 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;6 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 30&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (numList) =&amp;gt; {
  return numList.sort((a, b) =&amp;gt; a - b)
    .filter((num, index) =&amp;gt; index &amp;lt; 5);
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Fri, 12 Apr 2024 02:04:35 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-21%EC%9D%BC%EC%B0%A8</guid></item><item><title>프로그래머스/Javascript : 기초 문제 20일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-20%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="배열의-길이를-2의-거듭제곱으로-만들기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181857"&gt;배열의 길이를 2의 거듭제곱으로 만들기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;이 매개변수로 주어집니다. &lt;code&gt;arr&lt;/code&gt;의 길이가 2의 정수 거듭제곱이 되도록 &lt;code&gt;arr&lt;/code&gt; 뒤에 정수 0을 추가하려고 합니다. &lt;code&gt;arr&lt;/code&gt;에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 ≤ 1,000&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = arr =&amp;gt; {
  let length = arr.length;
  let answer = arr;
  let count = 0;

  while (true) {
    length = Math.round(length / 2);

    if (length === 1) {
      break;
    }
    count++;
  }

  if (2 ** count &amp;lt; arr.length) {
    for (let i = arr.length; i &amp;lt; 2 ** (count + 1); i++) {
      answer.push(0);
    }
  }

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열-비교하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181856"&gt;배열 비교하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.&lt;/p&gt;
&lt;p&gt;두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
두 정수 배열 &lt;code&gt;arr1&lt;/code&gt;과 &lt;code&gt;arr2&lt;/code&gt;가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 &lt;code&gt;arr2&lt;/code&gt;가 크다면 -1, &lt;code&gt;arr1&lt;/code&gt;이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr1&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr2&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr1&lt;/code&gt;의 원소 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr2&lt;/code&gt;의 원소 ≤ 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;문제에서 정의한 배열의 대소관계가 일반적인 프로그래밍 언어에서 정의된 배열의 대소관계와 다를 수 있는 점에 유의해주세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (arr1, arr2) =&amp;gt; {
  if (arr1.length &amp;gt; arr2.length) {
    return 1;
  } else if (arr1.length &amp;lt; arr2.length) {
    return -1;
  } else {
    const arr1Sum = arr1.reduce((acc, cur) =&amp;gt; acc + cur, 0);
    const arr2Sum = arr2.reduce((acc, cur) =&amp;gt; acc + cur, 0);
    if (arr1Sum &amp;gt; arr2Sum) {
      return 1;
    } else if (arr1Sum &amp;lt; arr2Sum) {
      return -1;
    } else {
      return 0;
    }
  }
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="문자열-묶기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181855"&gt;문자열 묶기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 배열 &lt;code&gt;strArr&lt;/code&gt;이 주어집니다. &lt;code&gt;strArr&lt;/code&gt;의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;strArr&lt;/code&gt;의 길이 ≤ 100,000
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;strArr&lt;/code&gt;의 원소의 길이 ≤ 30&lt;/li&gt;
&lt;li&gt;&lt;code&gt;strArr&lt;/code&gt;의 원소들은 알파벳 소문자로 이루어진 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (strArr) =&amp;gt; {
  const arr = {};
  strArr.map(str =&amp;gt; {
    if (!arr[str.length]) {
      arr[str.length] = [];
    }
    arr[str.length].push(str);
  });
  return Math.max(...Object.values(arr).map(arr =&amp;gt; arr.length));
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열의-길이에-따라-다른-연산하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181854"&gt;배열의 길이에 따라 다른 연산하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;과 정수 &lt;code&gt;n&lt;/code&gt;이 매개변수로 주어집니다. &lt;code&gt;arr&lt;/code&gt;의 길이가 홀수라면 &lt;code&gt;arr&lt;/code&gt;의 모든 짝수 인덱스 위치에 &lt;code&gt;n&lt;/code&gt;을 더한 배열을, &lt;code&gt;arr&lt;/code&gt;의 길이가 짝수라면 &lt;code&gt;arr&lt;/code&gt;의 모든 홀수 인덱스 위치에 &lt;code&gt;n&lt;/code&gt;을 더한 배열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 ≤ 1,000&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;n&lt;/code&gt; ≤ 1,000&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (arr, n) =&amp;gt; {
  if (arr.length % 2 === 0) {
    return arr.map((item, index) =&amp;gt; index % 2 === 0 ? item : item + n);
  } else {
    return arr.map((item, index) =&amp;gt; index % 2 === 1 ? item : item + n);
  }
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="뒤에서-5등까지"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181853"&gt;뒤에서 5등까지&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;정수로 이루어진 리스트 &lt;code&gt;num_list&lt;/code&gt;가 주어집니다. &lt;code&gt;num_list&lt;/code&gt;에서 가장 작은 5개의 수를 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;6 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 30&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (numList) =&amp;gt; {
  return numList.sort((a, b) =&amp;gt; a - b)
    .filter((num, index) =&amp;gt; index &amp;lt; 5);
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Wed, 10 Apr 2024 01:33:56 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-20%EC%9D%BC%EC%B0%A8</guid></item><item><title>프로그래머스/Javascript : 기초 문제 19일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-19%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="세-개의-구분자"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181862"&gt;세 개의 구분자&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;임의의 문자열이 주어졌을 때 문자 &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;를 구분자로 사용해 문자열을 나누고자 합니다.&lt;/p&gt;
&lt;p&gt;예를 들어 주어진 문자열이 &amp;quot;baconlettucetomato&amp;quot;라면 나눠진 문자열 목록은 [&amp;quot;onlettu&amp;quot;, &amp;quot;etom&amp;quot;, &amp;quot;to&amp;quot;] 가 됩니다.&lt;/p&gt;
&lt;p&gt;문자열 &lt;code&gt;myStr&lt;/code&gt;이 주어졌을 때 위 예시와 같이 &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;p&gt;단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 [&amp;quot;EMPTY&amp;quot;]를 return 합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;myStr&lt;/code&gt;의 길이 ≤ 1,000,000
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myStr&lt;/code&gt;은 알파벳 소문자로 이루어진 문자열 입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myStr = [];

rl.on('line', (line) =&amp;gt; {
  myStr = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(myStr);
  console.log(answer);
});

const solution = myStr =&amp;gt; {
  let answer = [];
  let str = '';
  for (let i = 0; i &amp;lt; myStr.length; i++) {
    if (!['a', 'b', 'c'].includes(myStr[i])) {
      str += myStr[i];
    } else {
      if (str !== '') {
        answer.push(str);
      }
      str = '';
    }
  }
  if (str !== '') {
    answer.push(str);
  }

  return answer.length === 0 ? [&amp;quot;EMPTY&amp;quot;] : answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열의-원소만큼-추가하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181861"&gt;배열의 원소만큼 추가하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 양의 정수 배열 &lt;code&gt;arr&lt;/code&gt;가 매개변수로 주어질 때, &lt;code&gt;arr&lt;/code&gt;의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 뒤의 배열 X를 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 ≤ 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = [];

rl.on('line', (line) =&amp;gt; {
  arr = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(arr);
  console.log(answer);
});

const solution = arr =&amp;gt; {
  let answer = [];
  for (let i = 0; i &amp;lt; arr.length; i++) {
    for (let j = 0; j &amp;lt; arr[i]; j++) {
      answer.push(arr[i]);
    }
  }
  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="빈-배열에-추가-삭제하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181860"&gt;빈 배열에 추가, 삭제하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 길이가 같은 정수 배열 &lt;code&gt;arr&lt;/code&gt;과 boolean 배열 &lt;code&gt;flag&lt;/code&gt;가 매개변수로 주어질 때, &lt;code&gt;flag&lt;/code&gt;를 차례대로 순회하며 &lt;code&gt;flag[i]&lt;/code&gt;가 true라면 X의 뒤에 &lt;code&gt;arr[i]&lt;/code&gt;를 &lt;code&gt;arr[i]&lt;/code&gt; × 2 번 추가하고, &lt;code&gt;flag[i]&lt;/code&gt;가 false라면 X에서 마지막 &lt;code&gt;arr[i]&lt;/code&gt;개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 = &lt;code&gt;flag&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;&lt;code&gt;arr&lt;/code&gt;의 모든 원소는 1 이상 9 이하의 정수입니다.&lt;/li&gt;
&lt;li&gt;현재 X의 길이보다 더 많은 원소를 빼는 입력은 주어지지 않습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = [];
let flag = [];
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    arr = line.split(' ').map(Number);
  } else {
    flag = line.split(' ').map(Number).map(item =&amp;gt; item === 1);
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(arr, flag);
  console.log(answer);
});

const solution = (arr, flag) =&amp;gt; {
  let answer = [];
  for (let i = 0; i &amp;lt; arr.length; i++) {
    if (flag[i]) {
       for (let j = 0; j &amp;lt; arr[i] * 2; j++) {
         answer.push(arr[i]);
       }
    } else {
      answer.splice(answer.length - arr[i], answer.length);
    }
  }

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열-만들기-6"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181859"&gt;배열 만들기 6&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;0과 1로만 이루어진 정수 배열 &lt;code&gt;arr&lt;/code&gt;가 주어집니다. &lt;code&gt;arr&lt;/code&gt;를 이용해 새로운 배열 &lt;code&gt;stk&lt;/code&gt;을 만드려고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;i&lt;/code&gt;의 초기값을 0으로 설정하고 &lt;code&gt;i&lt;/code&gt;가 &lt;code&gt;arr&lt;/code&gt;의 길이보다 작으면 다음을 반복합니다.&lt;/p&gt;
&lt;p&gt;만약 &lt;code&gt;stk&lt;/code&gt;이 빈 배열이라면 &lt;code&gt;arr[i]&lt;/code&gt;를 &lt;code&gt;stk&lt;/code&gt;에 추가하고 &lt;code&gt;i&lt;/code&gt;에 1을 더합니다.
&lt;code&gt;stk&lt;/code&gt;에 원소가 있고, &lt;code&gt;stk&lt;/code&gt;의 마지막 원소가 &lt;code&gt;arr[i]&lt;/code&gt;와 같으면 &lt;code&gt;stk&lt;/code&gt;의 마지막 원소를 &lt;code&gt;stk&lt;/code&gt;에서 제거하고 &lt;code&gt;i&lt;/code&gt;에 1을 더합니다.
&lt;code&gt;stk&lt;/code&gt;에 원소가 있는데 &lt;code&gt;stk&lt;/code&gt;의 마지막 원소가 &lt;code&gt;arr[i]&lt;/code&gt;와 다르면 &lt;code&gt;stk&lt;/code&gt;의 맨 마지막에 &lt;code&gt;arr[i]&lt;/code&gt;를 추가하고 &lt;code&gt;i&lt;/code&gt;에 1을 더합니다.
위 작업을 마친 후 만들어진 &lt;code&gt;stk&lt;/code&gt;을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;p&gt;단, 만약 빈 배열을 return 해야한다면 [-1]을 return 합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 1,000,000
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;arr&lt;/code&gt;의 원소는 0 또는 1 입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = [];

rl.on('line', (line) =&amp;gt; {
  arr = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(arr);
  console.log(answer);
});

const solution = arr =&amp;gt; {
  let answer = [arr[0]];
  let number = arr[0];
  for (let i = 1; i &amp;lt; arr.length; i++) {
    if (answer[answer.length - 1] !== arr[i]) {
      answer.push(arr[i]);
    } else {
      answer.splice(answer.length - 1, answer.length);
    }

    number = arr[i];
  }

  return answer.length === 0 ? [-1] : answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="무작위로-k개의-수-뽑기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181858"&gt;무작위로 K개의 수 뽑기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;랜덤으로 서로 다른 &lt;code&gt;k&lt;/code&gt;개의 수를 저장한 배열을 만드려고 합니다. 적절한 방법이 떠오르지 않기 때문에 일정한 범위 내에서 무작위로 수를 뽑은 후, 지금까지 나온적이 없는 수이면 배열 맨 뒤에 추가하는 방식으로 만들기로 합니다.&lt;/p&gt;
&lt;p&gt;이미 어떤 수가 무작위로 주어질지 알고 있다고 가정하고, 실제 만들어질 길이 &lt;code&gt;k&lt;/code&gt;의 배열을 예상해봅시다.&lt;/p&gt;
&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;가 주어집니다. 문제에서의 무작위의 수는 &lt;code&gt;arr&lt;/code&gt;에 저장된 순서대로 주어질 예정이라고 했을 때, 완성될 배열을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;p&gt;단, 완성될 배열의 길이가 k보다 작으면 나머지 값을 전부 -1로 채워서 return 합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 100,000
&lt;ul&gt;
&lt;li&gt;0 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 ≤ 100,000&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;k&lt;/code&gt; ≤ 1,000&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = [];
let k = 0;
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    arr = line.split(' ').map(Number);
  } else {
    k = Number(line);
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(arr, k);
  console.log(answer);
});

const solution = (arr, k) =&amp;gt; {
  let answer = [];
  let set = [...new Set(arr)];

  for (let i = 0; i &amp;lt; k; i++) {
    if (set[i] !== undefined) {
      answer.push(set[i]);
    } else {
      answer.push(-1);
    }
  }

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Mon, 08 Apr 2024 01:26:28 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-19%EC%9D%BC%EC%B0%A8</guid></item><item><title>프로그래머스/Javascript : 기초 문제 18일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-18%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="x-사이의-개수"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181867"&gt;x 사이의 개수&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;myString&lt;/code&gt;이 주어집니다. &lt;code&gt;myString&lt;/code&gt;을 문자 &amp;quot;x&amp;quot;를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;myString&lt;/code&gt;의 길이 ≤ 100,000
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myString&lt;/code&gt;은 알파벳 소문자로 이루어진 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';

rl.on('line', (line) =&amp;gt; {
  myString = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(myString);
  console.log(answer);
});

const solution = myString =&amp;gt; {
  let answer = [];
  let count = 0;

  for (let i = 0; i &amp;lt; myString.length; i++) {
    if (myString[i] !== 'x') {
      count++;
    } else {
      answer.push(count);
      count = 0;
    }
  }
  answer.push(count);

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="문자열-잘라서-정렬하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181866"&gt;문자열 잘라서 정렬하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;myString&lt;/code&gt;이 주어집니다. &lt;code&gt;myString&lt;/code&gt;을 문자 &amp;quot;x&amp;quot;를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;myString&lt;/code&gt;의 길이 ≤ 100,000
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myString&lt;/code&gt;은 알파벳 소문자로 이루어진 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';

rl.on('line', (line) =&amp;gt; {
  myString = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(myString);
  console.log(answer);
});

const solution = myString =&amp;gt; {
  let answer = [];
  let str = '';

  for (let i = 0; i &amp;lt; myString.length; i++) {
    if (myString[i] !== 'x') {
      str += myString[i];
    } else {
      if (str !== '') {
        answer.push(str);
        str = '';
      }
    }
  }
  if (str !== '') {
    answer.push(str);
  }

  return answer.sort();
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="간단한-식-계산하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181865"&gt;간단한 식 계산하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;binomial&lt;/code&gt;이 매개변수로 주어집니다. &lt;code&gt;binomial&lt;/code&gt;은 &amp;quot;&lt;code&gt;a&lt;/code&gt; &lt;code&gt;op&lt;/code&gt; &lt;code&gt;b&lt;/code&gt;&amp;quot; 형태의 이항식이고 &lt;code&gt;a&lt;/code&gt;와 &lt;code&gt;b&lt;/code&gt;는 음이 아닌 정수, &lt;code&gt;op&lt;/code&gt;는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;0 ≤ &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt; ≤ 40,000&lt;/li&gt;
&lt;li&gt;0을 제외하고 &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;는 0으로 시작하지 않습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let binomial = '';

rl.on('line', (line) =&amp;gt; {
  binomial = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(binomial);
  console.log(answer);
});

const solution = binomial =&amp;gt; {
  const calcString = binomial.split(' ');
  if (calcString[1] === '+') {
    return parseInt(calcString[0]) + parseInt(calcString[2]);
  } else if (calcString[1] === '-') {
    return parseInt(calcString[0]) - parseInt(calcString[2]);
  } else if (calcString[1] === '*') {
    return parseInt(calcString[0]) * parseInt(calcString[2]);
  } else if (calcString[1] === '/')
    return parseInt(calcString[0]) / parseInt(calcString[2]);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="문자열-바꿔서-찾기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181864"&gt;문자열 바꿔서 찾기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;문자 &amp;quot;A&amp;quot;와 &amp;quot;B&amp;quot;로 이루어진 문자열 &lt;code&gt;myString&lt;/code&gt;과 &lt;code&gt;pat&lt;/code&gt;가 주어집니다. myString의 &amp;quot;A&amp;quot;를 &amp;quot;B&amp;quot;로, &amp;quot;B&amp;quot;를 &amp;quot;A&amp;quot;로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;myString&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;pat&lt;/code&gt;의 길이 ≤ 10
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myString&lt;/code&gt;과 &lt;code&gt;pat&lt;/code&gt;는 문자 &amp;quot;A&amp;quot;와 &amp;quot;B&amp;quot;로만 이루어진 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';
let pat = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    myString = line;
  } else {
    pat = line;
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(myString, pat);
  console.log(answer);
});

const solution = (myString, pat) =&amp;gt; {
  const reverseString = myString.split('').map((char) =&amp;gt; char === 'A' ? 'B' : 'A').join('');
  for (let i = 0; i &amp;lt;= reverseString.length - pat.length; i++) {
    if (pat === reverseString.substring(i, i + pat.length)) {
      return 1;
    }
  }

  return 0;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="rnystring"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181863"&gt;rny_string&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;'m'과 &amp;quot;rn&amp;quot;이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다. 문자열 &lt;code&gt;rny_string&lt;/code&gt;이 주어질 때, &lt;code&gt;rny_string&lt;/code&gt;의 모든 'm'을 &amp;quot;rn&amp;quot;으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;rny_string&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rny_string&lt;/code&gt;은 영소문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let rnyString = '';

rl.on('line', (line) =&amp;gt; {
  rnyString = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(rnyString);
  console.log(answer);
});

const solution = rnyString =&amp;gt; {
  return rnyString.split('').map(str =&amp;gt; str === 'm' ? 'rn' : str).join('');
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Wed, 27 Mar 2024 00:32:23 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-18%EC%9D%BC%EC%B0%A8</guid></item><item><title>프로그래머스/Javascript : 기초 문제 17일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-17%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="특정-문자열로-끝나는-가장-긴-부분-문자열-찾"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181872"&gt;특정 문자열로 끝나는 가장 긴 부분 문자열 찾기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;myString&lt;/code&gt;과 &lt;code&gt;pat&lt;/code&gt;가 주어집니다. &lt;code&gt;myString&lt;/code&gt;의 부분 문자열중 &lt;code&gt;pat&lt;/code&gt;로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;5 ≤ &lt;code&gt;myString&lt;/code&gt; ≤ 20&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;pat&lt;/code&gt; ≤ 5
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pat&lt;/code&gt;은 반드시 &lt;code&gt;myString&lt;/code&gt;의 부분 문자열로 주어집니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;myString&lt;/code&gt;과 &lt;code&gt;pat&lt;/code&gt;에 등장하는 알파벳은 대문자와 소문자를 구분합니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';
let pat = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    myString = line;
  } else {
    pat = line;
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(myString, pat);
  console.log(answer);
});

const solution = (myString, pat) =&amp;gt; {
  for (let i = myString.length + 1 - pat.length; i &amp;gt;= 0; i--) {
    if (pat === myString.substring(i, i + pat.length)) {
      return myString.substring(0, i + pat.length);
    }
  }
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="문자열이-몇-번-등장하는지-세기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181871"&gt;문자열이 몇 번 등장하는지 세기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;myString&lt;/code&gt;과 &lt;code&gt;pat&lt;/code&gt;이 주어집니다. &lt;code&gt;myString&lt;/code&gt;에서 &lt;code&gt;pat&lt;/code&gt;이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;myString&lt;/code&gt; ≤ 1000&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;pat&lt;/code&gt; ≤ 10&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';
let pat = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    myString = line;
  } else {
    pat = line;
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(myString, pat);
  console.log(answer);
});

const solution = (myString, pat) =&amp;gt; {
  let count = 0;
  for (let i = myString.length + 1 - pat.length; i &amp;gt;= 0; i--) {
    if (pat === myString.substring(i, i + pat.length)) {
      count++;
    }
  }

  return count;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="ad-제거하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181870"&gt;ad 제거하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 배열 &lt;code&gt;strArr&lt;/code&gt;가 주어집니다. 배열 내의 문자열 중 &amp;quot;ad&amp;quot;라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;strArr&lt;/code&gt;의 길이 ≤ 1,000
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;strArr&lt;/code&gt;의 원소의 길이 ≤ 20&lt;/li&gt;
&lt;li&gt;&lt;code&gt;strArr&lt;/code&gt;의 원소는 알파벳 소문자로 이루어진 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let strArr = '';

rl.on('line', (line) =&amp;gt; {
  strArr = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(strArr);
  console.log(answer);
});

const solution = strArr =&amp;gt; {
  return strArr.filter(str =&amp;gt; !str.includes('ad'));
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="공백으로-구분하기-1"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181869"&gt;공백으로 구분하기 1&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;단어가 공백 한 개로 구분되어 있는 문자열 &lt;code&gt;my_string&lt;/code&gt;이 매개변수로 주어질 때, &lt;code&gt;my_string&lt;/code&gt;에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';

rl.on('line', (line) =&amp;gt; {
  myString = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(strArr);
  console.log(answer);
});

const solution = myString =&amp;gt; {
  return myString.split(' ');
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="공백으로-구분하기-2"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181868"&gt;공백으로 구분하기 2&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;단어가 공백 한 개 이상으로 구분되어 있는 문자열 &lt;code&gt;my_string&lt;/code&gt;이 매개변수로 주어질 때, &lt;code&gt;my_string&lt;/code&gt;에 나온 단어를 앞에서부터 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;은 영소문자와 공백으로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;의 맨 앞과 맨 뒤에도 공백이 있을 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;에는 단어가 하나 이상 존재합니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';

rl.on('line', (line) =&amp;gt; {
  myString = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(myString);
  console.log(answer);
});

const solution = myString =&amp;gt; {
  return myString.replace(/ +/g, ' ')
    .split(' ')
    .filter(str =&amp;gt; str !== '');
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Sun, 24 Mar 2024 02:28:21 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-17%EC%9D%BC%EC%B0%A8</guid></item><item><title> 프로그래머스/Javascript : 기초 문제 16일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-16%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="대문자로-바꾸기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181877"&gt;대문자로 바꾸기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;알파벳으로 이루어진 문자열 &lt;code&gt;myString&lt;/code&gt;이 주어집니다. 모든 알파벳을 대문자로 변환하여 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;myString&lt;/code&gt;의 길이 ≤ 100,000
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myString&lt;/code&gt;은 알파벳으로 이루어진 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';

rl.on('line', (line) =&amp;gt; {
  myString = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(myString);
  console.log(answer);
});

const solution = myString =&amp;gt; {
  return myString.toUpperCase()
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="소문자로-바꾸기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181876"&gt;소문자로 바꾸기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;알파벳으로 이루어진 문자열 &lt;code&gt;myString&lt;/code&gt;이 주어집니다. 모든 알파벳을 소문자로 변환하여 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;myString&lt;/code&gt;의 길이 ≤ 100,000
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myString&lt;/code&gt;은 알파벳으로 이루어진 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';

rl.on('line', (line) =&amp;gt; {
  myString = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(myString);
  console.log(answer);
});

const solution = myString =&amp;gt; {
  return myString.toLowerCase()
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열에서-문자열-대소문자-변환하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181875"&gt;배열에서 문자열 대소문자 변환하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 배열 &lt;code&gt;strArr&lt;/code&gt;가 주어집니다. 모든 원소가 알파벳으로만 이루어져 있을 때, 배열에서 홀수번째 인덱스의 문자열은 모든 문자를 대문자로, 짝수번째 인덱스의 문자열은 모든 문자를 소문자로 바꿔서 반환하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;strArr&lt;/code&gt; ≤ 20
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;strArr&lt;/code&gt;의 원소의 길이 ≤ 20&lt;/li&gt;
&lt;li&gt;&lt;code&gt;strArr&lt;/code&gt;의 원소는 알파벳으로 이루어진 문자열 입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';
let alp = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    myString = line;
  } else {
    alp = line;
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(myString, pat);
  console.log(answer);
});

const solution = (myString, alp) =&amp;gt; {
  let array = '';
  for (let i = 0; i &amp;lt; myString.length; i++) {
    if (myString[i].includes(alp)) {
      array += myString[i].toUpperCase();
    } else {
      array += myString[i];
    }
  }

  return array;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="a-강조하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181874"&gt;A 강조하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;myString&lt;/code&gt;이 주어집니다. &lt;code&gt;myString&lt;/code&gt;에서 알파벳 &amp;quot;a&amp;quot;가 등장하면 전부 &amp;quot;A&amp;quot;로 변환하고, &amp;quot;A&amp;quot;가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 return 하는 solution 함수를 완성하세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;myString&lt;/code&gt;의 길이 ≤ 20
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;myString&lt;/code&gt;은 알파벳으로 이루어진 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';

rl.on('line', (line) =&amp;gt; {
  myString = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(myString);
  console.log(answer);
});

const solution = myString =&amp;gt; {
  let array = '';
  for (let i = 0; i &amp;lt; myString.length; i++) {
    if (myString[i].includes('a')) {
      array += myString[i].toUpperCase();
    } else if (!myString[i].includes('A')) {
      array += myString[i].toLowerCase();
    } else {
      array += myString[i];
    }
  }

  return array;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="특정한-문자를-대문자로-바꾸기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181873"&gt;특정한 문자를 대문자로 바꾸기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;영소문자로 이루어진 문자열 &lt;code&gt;my_string&lt;/code&gt;과 영소문자 1글자로 이루어진 문자열 &lt;code&gt;alp&lt;/code&gt;가 매개변수로 주어질 때, &lt;code&gt;my_string&lt;/code&gt;에서 &lt;code&gt;alp&lt;/code&gt;에 해당하는 모든 글자를 대문자로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';
let alp = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    myString = line;
  } else {
    alp = line;
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(myString, pat);
  console.log(answer);
});

const solution = (myString, alp) =&amp;gt; {
  let array = '';
  for (let i = 0; i &amp;lt; myString.length; i++) {
    if (myString[i].includes(alp)) {
      array += myString[i].toUpperCase();
    } else {
      array += myString[i];
    }
  }

  return array;
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Sat, 23 Mar 2024 00:43:15 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-16%EC%9D%BC%EC%B0%A8</guid></item><item><title>프로그래머스/Javascript : 기초 문제 15일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-15%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="조건에-맞게-수열-변환하기-1"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181882"&gt;조건에 맞게 수열 변환하기 1&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;가 주어집니다. &lt;code&gt;arr&lt;/code&gt;의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱합니다. 그 결과인 정수 배열을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 1,000,000
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소의 값 ≤ 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = '';

rl.on('line', (line) =&amp;gt; {
  arr = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(arr);
  console.log(answer);
});

const solution = arr =&amp;gt; {
  let answer = [];
  for (const item of arr) {
    if (item &amp;gt;= 50 &amp;amp;&amp;amp; item % 2 === 0) {
      answer.push(item / 2);
    } else if (item &amp;lt; 50 &amp;amp;&amp;amp; item % 2 === 1) {
      answer.push(item * 2);
    } else {
      answer.push(item);
    }
  }

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="조건에-맞게-수열-변환하기-2"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181881"&gt;조건에 맞게 수열 변환하기 2&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;가 주어집니다. &lt;code&gt;arr&lt;/code&gt;의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다.&lt;/p&gt;
&lt;p&gt;이러한 작업을 &lt;code&gt;x&lt;/code&gt;번 반복한 결과인 배열을 &lt;code&gt;arr(x)&lt;/code&gt;라고 표현했을 때, &lt;code&gt;arr(x) = arr(x + 1)&lt;/code&gt;인 &lt;code&gt;x&lt;/code&gt;가 항상 존재합니다. 이러한 &lt;code&gt;x&lt;/code&gt; 중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;p&gt;단, 두 배열에 대한 &amp;quot;=&amp;quot;는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ arr의 길이 ≤ 1,000,000
&lt;ul&gt;
&lt;li&gt;1 ≤ arr의 원소의 값 ≤ 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = '';

rl.on('line', (line) =&amp;gt; {
  arr = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(arr);
  console.log(answer);
});

const solution = arr =&amp;gt; {
  let tempArray = [...arr];
  let array = arr;
  let count = 0;

  while (true) {
    for (let index in array) {
      if (array[index] &amp;gt;= 50 &amp;amp;&amp;amp; array[index] % 2 === 0) {
        array[index] = array[index] / 2;
      } else if (array[index] &amp;lt; 50 &amp;amp;&amp;amp; array[index] % 2 === 1) {
        array[index] = array[index] * 2 + 1;
      } else {
        array[index] = array[index];
      }
    }

    console.log(JSON.stringify(tempArray), JSON.stringify(array))
    if (JSON.stringify(tempArray) === JSON.stringify(array)) {
      return count;
    }
    tempArray = [...array];
    count++;
  }
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="1로-만들기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181880"&gt;1로 만들기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;정수가 있을 때, 짝수라면 반으로 나누고, 홀수라면 1을 뺀 뒤 반으로 나누면, 마지막엔 1이 됩니다. 예를 들어 10이 있다면 다음과 같은 과정으로 1이 됩니다.&lt;/p&gt;
&lt;p&gt;10 / 2 = 5
(5 - 1) / 2 = 2
2 / 2 = 1
위와 같이 3번의 나누기 연산으로 1이 되었습니다.&lt;/p&gt;
&lt;p&gt;정수들이 담긴 리스트 &lt;code&gt;num_list&lt;/code&gt;가 주어질 때, &lt;code&gt;num_list&lt;/code&gt;의 모든 원소를 1로 만들기 위해서 필요한 나누기 연산의 횟수를 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;3 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 15&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 30&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = '';

rl.on('line', (line) =&amp;gt; {
  arr = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(arr);
  console.log(answer);
});

const solution = num_list =&amp;gt; {
  let count = 0;
  for (let num of num_list) {
    while (num !== 1) {
      if (num % 2 === 0) {
        num = num / 2;
      } else {
        num = (num - 1) / 2;
      }
      count++;
    }
  }

  return count;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="길이에-따른-연산"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181879"&gt;길이에 따른 연산&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;정수가 있을 때, 짝수라면 반으로 나누고, 홀수라면 1을 뺀 뒤 반으로 나누면, 마지막엔 1이 됩니다. 예를 들어 10이 있다면 다음과 같은 과정으로 1이 됩니다.&lt;/p&gt;
&lt;p&gt;10 / 2 = 5
(5 - 1) / 2 = 2
2 / 2 = 1
위와 같이 3번의 나누기 연산으로 1이 되었습니다.&lt;/p&gt;
&lt;p&gt;정수들이 담긴 리스트 &lt;code&gt;num_list&lt;/code&gt;가 주어질 때, &lt;code&gt;num_list&lt;/code&gt;의 모든 원소를 1로 만들기 위해서 필요한 나누기 연산의 횟수를 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;3 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 15&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 30&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = '';

rl.on('line', (line) =&amp;gt; {
  arr = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(arr);
  console.log(answer);
});

const solution = num_list =&amp;gt; {
  let answer = 0;
  if (num_list.length &amp;gt; 10) {
    for (const num of num_list) {
      answer += num;
    }
  } else {
    answer = 1;
    for (const num of num_list) {
      answer *= num;
    }
  }

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="원하는-문자열-찾기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181878"&gt;원하는 문자열 찾기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;알파벳으로 이루어진 문자열 &lt;code&gt;myString&lt;/code&gt;과 &lt;code&gt;pat&lt;/code&gt;이 주어집니다. &lt;code&gt;myString&lt;/code&gt;의 연속된 부분 문자열 중 &lt;code&gt;pat&lt;/code&gt;이 존재하면 1을 그렇지 않으면 0을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;p&gt;단, 알파벳 대문자와 소문자는 구분하지 않습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;myString&lt;/code&gt;의 길이 ≤ 100,000&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;pat&lt;/code&gt;의 길이 ≤ 300&lt;/li&gt;
&lt;li&gt;&lt;code&gt;myString&lt;/code&gt;과 &lt;code&gt;pat&lt;/code&gt;은 모두 알파벳으로 이루어진 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let myString = '';
let pat = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    myString = line;
  } else {
    pat = line;
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(myString, pat);
  console.log(answer);
});

const solution = (myString, pat) =&amp;gt; {
  if (myString.toLowerCase().includes(pat.toLowerCase())) {
    return 1;
  } else {
    return 0;
  }
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Fri, 22 Mar 2024 02:25:33 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-15%EC%9D%BC%EC%B0%A8</guid></item><item><title>프로그래머스/Javascript : 기초 문제 14일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-14%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="홀수-vs-짝수"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181887"&gt;홀수 vs 짝수&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 리스트 &lt;code&gt;num_list&lt;/code&gt;가 주어집니다. 가장 첫 번째 원소를 1번 원소라고 할 때, 홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 큰 값을 return 하도록 solution 함수를 완성해주세요. 두 값이 같을 경우 그 값을 return합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;5 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 50&lt;/li&gt;
&lt;li&gt;9 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 9&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let num_list = [];

rl.on('line', (line) =&amp;gt; {
  num_list = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(num_list);
  console.log(answer);
});

const solution = num_list =&amp;gt; {
  let odd = 0;
  let even = 0;

  for (let i = 0; i &amp;lt; num_list.length; i++) {
    if (i % 2 === 0) {
      even += num_list[i];
    } else {
      odd += num_list[i];
    }
  }

  return even &amp;gt; odd ? even : odd;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="5명씩"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181886"&gt;5명씩&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;최대 5명씩 탑승가능한 놀이기구를 타기 위해 줄을 서있는 사람들의 이름이 담긴 문자열 리스트 &lt;code&gt;names&lt;/code&gt;가 주어질 때, 앞에서 부터 5명씩 묶은 그룹의 가장 앞에 서있는 사람들의 이름을 담은 리스트를 return하도록 solution 함수를 완성해주세요. 마지막 그룹이 5명이 되지 않더라도 가장 앞에 있는 사람의 이름을 포함합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;5 ≤ &lt;code&gt;names&lt;/code&gt;의 길이 ≤ 30&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;names&lt;/code&gt;의 원소의 길이 ≤ 10&lt;/li&gt;
&lt;li&gt;&lt;code&gt;names&lt;/code&gt;의 원소는 영어 알파벳 소문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let names = [];

rl.on('line', (line) =&amp;gt; {
  names = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(names);
  console.log(answer);
});

const solution = names =&amp;gt; {
  let answer = [];
  for (let i = 0; i &amp;lt; names.length; i += 5) {
    answer.push(names[i]);
  }
  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="할-일-목록"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181885"&gt;할 일 목록&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;오늘 해야 할 일이 담긴 문자열 배열 &lt;code&gt;todo_list&lt;/code&gt;와 각각의 일을 지금 마쳤는지를 나타내는 boolean 배열 &lt;code&gt;finished&lt;/code&gt;가 매개변수로 주어질 때, &lt;code&gt;todo_list&lt;/code&gt;에서 아직 마치지 못한 일들을 순서대로 담은 문자열 배열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;todo_list&lt;/code&gt;의 길이 1 ≤ 100&lt;/li&gt;
&lt;li&gt;2 ≤ &lt;code&gt;todo_list&lt;/code&gt;의 원소의 길이 ≤ 20
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;todo_list&lt;/code&gt;의 원소는 영소문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;todo_list&lt;/code&gt;의 원소는 모두 서로 다릅니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;finished[i]&lt;/code&gt;는 true 또는 false이고 true는 &lt;code&gt;todo_list[i]&lt;/code&gt;를 마쳤음을, false는 아직 마치지 못했음을 나타냅니다.&lt;/li&gt;
&lt;li&gt;아직 마치지 못한 일이 적어도 하나 있습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let todo_list = [];
let finished = [];
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    todo_list = line.split(' ');
  } else {
    finished = line.split(' ').map(Number).map(item =&amp;gt; item === 1);
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(todo_list, finished);
  console.log(answer);
});

const solution = (todo_list, finished) =&amp;gt; {
  let answer = [];
  for (let i = 0; i &amp;lt; todo_list.length; i++) {
    if (!finished[i]) {
      answer.push(todo_list[i]);
    }
  }
  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="n보다-커질-때까지-더하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181884"&gt;n보다 커질 때까지 더하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;numbers&lt;/code&gt;와 정수 &lt;code&gt;n&lt;/code&gt;이 매개변수로 주어집니다. &lt;code&gt;numbers&lt;/code&gt;의 원소를 앞에서부터 하나씩 더하다가 그 합이 &lt;code&gt;n&lt;/code&gt;보다 커지는 순간 이때까지 더했던 원소들의 합을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;numbers&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;numbers&lt;/code&gt;의 원소 ≤ 100&lt;/li&gt;
&lt;li&gt;0 ≤ n &amp;lt; &lt;code&gt;numbers&lt;/code&gt;의 모든 원소의 합&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let todo_list = [];
let finished = [];
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    todo_list = line.split(' ');
  } else {
    finished = line.split(' ').map(Number).map(item =&amp;gt; item === 1);
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(todo_list, finished);
  console.log(answer);
});

const solution = (todo_list, finished) =&amp;gt; {
  let answer = [];
  for (let i = 0; i &amp;lt; todo_list.length; i++) {
    if (!finished[i]) {
      answer.push(todo_list[i]);
    }
  }
  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="수열과-구간-쿼리-1"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181883"&gt;수열과 구간 쿼리 1&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;numbers&lt;/code&gt;와 정수 &lt;code&gt;n&lt;/code&gt;이 매개변수로 주어집니다. &lt;code&gt;numbers&lt;/code&gt;의 원소를 앞에서부터 하나씩 더하다가 그 합이 &lt;code&gt;n&lt;/code&gt;보다 커지는 순간 이때까지 더했던 원소들의 합을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 1,000
&lt;ul&gt;
&lt;li&gt;0 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 ≤ 1,000,000&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;queries&lt;/code&gt;의 길이 ≤ 1,000
&lt;ul&gt;
&lt;li&gt;0 ≤ &lt;code&gt;s&lt;/code&gt;≤ &lt;code&gt;e&lt;/code&gt; &amp;lt; &lt;code&gt;arr&lt;/code&gt;의 길이&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = '';
let queries = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    input = line.split(' ').map(Number);
  } else {
    queries = line.split(' ');
    queries = queries.map(item =&amp;gt; {
      return item.split(',').map(Number);
    });
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(input, queries);
  console.log(answer);
});

const solution = (arr, queries) =&amp;gt; {
  let answer = arr;
  for (let i = 0; i &amp;lt; queries.length; i++) {
    for (let j = queries[i][0]; j &amp;lt;= queries[i][1]; j++) {
      answer[j] += 1;
    }
  }

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Wed, 20 Mar 2024 04:51:28 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-14%EC%9D%BC%EC%B0%A8</guid></item><item><title>프로그래머스/Javascript : 기초 문제 13일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-13%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="n-번째-원소부터"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181892"&gt;n 번째 원소부터&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 리스트 &lt;code&gt;num_list&lt;/code&gt;와 정수 &lt;code&gt;n&lt;/code&gt;이 주어질 때, &lt;code&gt;n&lt;/code&gt; 번째 원소부터 마지막 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;2 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 30&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 9&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;n&lt;/code&gt; ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let num_list = [];
let n = 0;
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    num_list = line.split(' ').map(Number);
  } else {
    n = Number(line)
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(input, queries);
  console.log(answer);
});

const solution = (num_list, n) =&amp;gt; {
  return num_list.slice(n - 1);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="순서-바꾸기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181891"&gt;순서 바꾸기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 리스트 &lt;code&gt;num_list&lt;/code&gt;와 정수 &lt;code&gt;n&lt;/code&gt;이 주어질 때, &lt;code&gt;num_list&lt;/code&gt;를 &lt;code&gt;n&lt;/code&gt; 번째 원소 이후의 원소들과 &lt;code&gt;n&lt;/code&gt; 번째까지의 원소들로 나눠 &lt;code&gt;n&lt;/code&gt; 번째 원소 이후의 원소들을 &lt;code&gt;n&lt;/code&gt; 번째까지의 원소들 앞에 붙인 리스트를 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;2 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 30&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 9&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;n&lt;/code&gt; ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let num_list = [];
let n = 0;
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    num_list = line.split(' ').map(Number);
  } else {
    n = Number(line)
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(input, queries);
  console.log(answer);
});

const solution = (num_list, n) =&amp;gt; {
  let a = num_list.slice(0, n);
  let b = num_list.slice(n);
  return [...b, ...a];
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="왼쪽-오른쪽"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181890"&gt;왼쪽 오른쪽&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 리스트 &lt;code&gt;str_list&lt;/code&gt;에는 &amp;quot;u&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;l&amp;quot;, &amp;quot;r&amp;quot; 네 개의 문자열이 여러 개 저장되어 있습니다. &lt;code&gt;str_list&lt;/code&gt;에서 &amp;quot;l&amp;quot;과 &amp;quot;r&amp;quot; 중 먼저 나오는 문자열이 &amp;quot;l&amp;quot;이라면 해당 문자열을 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를, 먼저 나오는 문자열이 &amp;quot;r&amp;quot;이라면 해당 문자열을 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를 return하도록 solution 함수를 완성해주세요. &amp;quot;l&amp;quot;이나 &amp;quot;r&amp;quot;이 없다면 빈 리스트를 return합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;str_list&lt;/code&gt;의 길이 ≤ 20&lt;/li&gt;
&lt;li&gt;&lt;code&gt;str_list&lt;/code&gt;는 &amp;quot;u&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;l&amp;quot;, &amp;quot;r&amp;quot; 네 개의 문자열로 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let num_list = [];

rl.on('line', (line) =&amp;gt; {
  num_list = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(input, queries);
  console.log(answer);
});

const solution = str_list =&amp;gt; {
  for (let i = 0; i &amp;lt; str_list.length; i++) {
    if (str_list[i] === 'l') {
      return str_list.slice(0, i);
    } else if (str_list[i] === 'r' &amp;amp;&amp;amp; i &amp;lt; str_list.length) {
      return str_list.slice(i + 1);
    }
  }
  return [];
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="n-번째-원소까지"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181889"&gt;n 번째 원소까지&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 리스트 &lt;code&gt;num_list&lt;/code&gt;와 정수 &lt;code&gt;n&lt;/code&gt;이 주어질 때, &lt;code&gt;num_list&lt;/code&gt;의 첫 번째 원소부터 &lt;code&gt;n&lt;/code&gt; 번째 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;2 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 30&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 9&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;n&lt;/code&gt; ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ___&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let num_list = [];
let n = 0;
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    num_list = line.split(' ').map(Number);
  } else {
    n = Number(line)
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(input, queries);
  console.log(answer);
});

const solution = (num_list, n) =&amp;gt; {
  return num_list.slice(0, n);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="n개-간격의-원소들"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181888"&gt;n개 간격의 원소들&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 리스트 &lt;code&gt;num_list&lt;/code&gt;와 정수 &lt;code&gt;n&lt;/code&gt;이 주어질 때, &lt;code&gt;num_list&lt;/code&gt;의 첫 번째 원소부터 마지막 원소까지 &lt;code&gt;n&lt;/code&gt;개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;5 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 20&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 9&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;n&lt;/code&gt; ≤ 4&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let num_list = [];
let n = 0;
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    num_list = line.split(' ').map(Number);
  } else {
    n = Number(line)
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(input, queries);
  console.log(answer);
});

const solution = (num_list, n) =&amp;gt; {
  let answer = [];
  for (let i = 0; i &amp;lt; num_list.length; i += n) {
    answer.push(num_list[i])
  }

  return answer
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Tue, 19 Mar 2024 02:58:54 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-13%EC%9D%BC%EC%B0%A8</guid></item><item><title> 프로그래머스/Javascript : 기초 문제 12일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-12%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="리스트-자르기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181897"&gt;리스트 자르기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 &lt;code&gt;n&lt;/code&gt;과 정수 3개가 담긴 리스트 &lt;code&gt;slicer&lt;/code&gt; 그리고 정수 여러 개가 담긴 리스트 &lt;code&gt;num_list&lt;/code&gt;가 주어집니다. &lt;code&gt;slicer&lt;/code&gt;에 담긴 정수를 차례대로 &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, &lt;code&gt;c&lt;/code&gt;라고 할 때, n에 따라 다음과 같이 &lt;code&gt;num_list&lt;/code&gt;를 슬라이싱 하려고 합니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;n = 1&lt;/code&gt; : &lt;code&gt;num_list&lt;/code&gt;의 0번 인덱스부터 b번 인덱스까지
&lt;code&gt;n = 2&lt;/code&gt; : &lt;code&gt;num_list&lt;/code&gt;의 &lt;code&gt;a&lt;/code&gt;번 인덱스부터 마지막 인덱스까지
&lt;code&gt;n = 3&lt;/code&gt; : &lt;code&gt;num_list&lt;/code&gt;의 &lt;code&gt;a&lt;/code&gt;번 인덱스부터 &lt;code&gt;b&lt;/code&gt;번 인덱스까지
&lt;code&gt;n = 4&lt;/code&gt; : &lt;code&gt;num_list&lt;/code&gt;의 &lt;code&gt;a&lt;/code&gt;번 인덱스부터 &lt;code&gt;b&lt;/code&gt;번 인덱스까지 &lt;code&gt;c&lt;/code&gt; 간격으로
올바르게 슬라이싱한 리스트를 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;n&lt;/code&gt; 은 1, 2, 3, 4 중 하나입니다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;slicer&lt;/code&gt;의 길이 = 3&lt;/li&gt;
&lt;li&gt;&lt;code&gt;slicer&lt;/code&gt;에 담긴 정수를 차례대로 &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, &lt;code&gt;c&lt;/code&gt;라고 할 때
&lt;ul&gt;
&lt;li&gt;0 ≤ &lt;code&gt;a&lt;/code&gt; ≤ &lt;code&gt;b&lt;/code&gt; ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 - 1&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;c&lt;/code&gt; ≤ 3&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;5 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 30&lt;/li&gt;
&lt;li&gt;0 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let n = '';
let slicer = [];
let num_list = [];
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    n = Number(line);
  } else if (count === 1){
    slicer = line.split(' ').map(Number)
  } else {
    num_list = line.split(' ').map(Number);
  }
  count++;
  if (count &amp;gt; 2) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(n, slicer, num_list);
  console.log(answer);
});

const solution = (n, slicer, num_list) =&amp;gt; {
  switch (n) {
    case 1:
      return num_list.slice(0, slicer[1]+1);
    case 2:
      return num_list.slice(slicer[0]);
    case 3:
      return num_list.slice(slicer[0], slicer[1]+1);
    case 4:
      const list = num_list.slice(slicer[0], slicer[1]+1);
      return list.filter((_, index) =&amp;gt; index % slicer[2] === 0)
  }
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="첫-번째로-나오는-음수"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181896"&gt;첫 번째로 나오는 음수&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 리스트 &lt;code&gt;num_list&lt;/code&gt;가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;5 ≤ &lt;code&gt;num_list&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;10 ≤ &lt;code&gt;num_list&lt;/code&gt;의 원소 ≤ 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = '';

rl.on('line', (line) =&amp;gt; {
  input = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(input);
  console.log(answer);
});

const solution = (num_list) =&amp;gt; {
  let count = 0;
  while (true) {
    if (num_list[count] &amp;lt; 0) {
      return count;
    }
    if (count &amp;gt; num_list.length) {
      return -1;
    }
    count++;
  }
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열-만들기-3"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181895"&gt;배열 만들기 3&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;와 2개의 구간이 담긴 배열 &lt;code&gt;intervals&lt;/code&gt;가 주어집니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;intervals&lt;/code&gt;는 항상 &lt;code&gt;[[a1, b1], [a2, b2]]&lt;/code&gt;의 꼴로 주어지며 각 구간은 닫힌 구간입니다. 닫힌 구간은 양 끝값과 그 사이의 값을 모두 포함하는 구간을 의미합니다.&lt;/p&gt;
&lt;p&gt;이때 배열 &lt;code&gt;arr&lt;/code&gt;의 첫 번째 구간에 해당하는 배열과 두 번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열을 만들어 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = [];
let intervals = [];
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    arr = line.split(' ').map(Number);
  } else {
    intervals = line.split(' ').map(
      item =&amp;gt; item.split(','),
    );
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(arr, intervals);
  console.log(answer);
});

const solution = (arr, intervals) =&amp;gt; {
  let answer = [];
  intervals.map(interval =&amp;gt; {
    answer.push(...arr.slice(interval[0], interval[1] + 1));
  });

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열-만들기-3-1"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181895"&gt;배열 만들기 3&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;와 2개의 구간이 담긴 배열 &lt;code&gt;intervals&lt;/code&gt;가 주어집니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;intervals&lt;/code&gt;는 항상 &lt;code&gt;[[a1, b1], [a2, b2]]&lt;/code&gt;의 꼴로 주어지며 각 구간은 닫힌 구간입니다. 닫힌 구간은 양 끝값과 그 사이의 값을 모두 포함하는 구간을 의미합니다.&lt;/p&gt;
&lt;p&gt;이때 배열 &lt;code&gt;arr&lt;/code&gt;의 첫 번째 구간에 해당하는 배열과 두 번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열을 만들어 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 100,000
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 &amp;lt; 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;a1&lt;/code&gt; ≤ &lt;code&gt;b1&lt;/code&gt; &amp;lt; &lt;code&gt;arr&lt;/code&gt;의 길이&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;a2&lt;/code&gt; ≤ &lt;code&gt;b2&lt;/code&gt; &amp;lt; &lt;code&gt;arr&lt;/code&gt;의 길이&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = [];
let intervals = [];
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    arr = line.split(' ').map(Number);
  } else {
    intervals = line.split(' ').map(
      item =&amp;gt; item.split(','),
    );
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(arr, intervals);
  console.log(answer);
});

const solution = (arr, intervals) =&amp;gt; {
  let answer = [];
  intervals.map(interval =&amp;gt; {
    answer.push(...arr.slice(interval[0], interval[1] + 1));
  });

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="2의-영역"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181894"&gt;2의 영역&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;p&gt;단, &lt;code&gt;arr&lt;/code&gt;에 2가 없는 경우 [-1]을 return 합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 100,000
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 ≤ 10&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = '';

rl.on('line', (line) =&amp;gt; {
  input = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(input);
  console.log(answer);
});

const solution = arr =&amp;gt; {
  const start = arr.indexOf(2);
  if (start !== -1) {
    const end = (arr.reverse()).indexOf(2);

    return arr.reverse().slice(start, arr.length - end);
  }

  return [-1];
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열-조각하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181893"&gt;배열 조각하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-5"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;와 &lt;code&gt;query&lt;/code&gt;가 주어집니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;query&lt;/code&gt;를 순회하면서 다음 작업을 반복합니다.&lt;/p&gt;
&lt;p&gt;짝수 인덱스에서는 &lt;code&gt;arr&lt;/code&gt;에서 &lt;code&gt;query[i]&lt;/code&gt;번 인덱스를 제외하고 배열의 &lt;code&gt;query[i]&lt;/code&gt;번 인덱스 뒷부분을 잘라서 버립니다.
홀수 인덱스에서는 &lt;code&gt;arr&lt;/code&gt;에서 &lt;code&gt;query[i]&lt;/code&gt;번 인덱스는 제외하고 배열의 &lt;code&gt;query[i]&lt;/code&gt;번 인덱스 앞부분을 잘라서 버립니다.
위 작업을 마친 후 남은 &lt;code&gt;arr&lt;/code&gt;의 부분 배열을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 100,000
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;arr&lt;/code&gt;의 원소 &amp;lt; 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;a1&lt;/code&gt; ≤ &lt;code&gt;b1&lt;/code&gt; &amp;lt; &lt;code&gt;arr&lt;/code&gt;의 길이&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;a2&lt;/code&gt; ≤ &lt;code&gt;b2&lt;/code&gt; &amp;lt; &lt;code&gt;arr&lt;/code&gt;의 길이&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-5"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let arr = [];
let query = [];
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    arr = line.split(' ').map(Number);
  } else {
    query = line.split(' ').map(Number);
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(arr, query);
  console.log(answer);
});

const solution = (arr, query) =&amp;gt; {
  let answer = arr;
  for (let i = 0; i &amp;lt; query.length; i++) {
    if (i % 2 === 0) {
      answer = answer.slice(0, query[i] + 1);
    } else {
      answer = answer.slice(query[i]);
    }
  }

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Mon, 18 Mar 2024 01:32:51 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-12%EC%9D%BC%EC%B0%A8</guid></item><item><title>프로그래머스/Javascript : 기초 문제 11일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-11%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="문자-개수-세기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181902"&gt;문자 개수 세기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;알파벳 대소문자로만 이루어진 문자열 &lt;code&gt;my_string&lt;/code&gt;이 주어질 때, &lt;code&gt;my_string&lt;/code&gt;에서 'A'의 개수, &lt;code&gt;my_string&lt;/code&gt;에서 'B'의 개수,..., &lt;code&gt;my_string&lt;/code&gt;에서 'Z'의 개수, &lt;code&gt;my_string&lt;/code&gt;에서 'a'의 개수, &lt;code&gt;my_string&lt;/code&gt;에서 'b'의 개수,..., &lt;code&gt;my_string&lt;/code&gt;에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = '';

rl.on('line', (line) =&amp;gt; {
  input = line;
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(input);
  console.log(answer);
});

const solution = my_string =&amp;gt; {
  let alphabetArray = Array.from({ length: 52 }, () =&amp;gt; 0);
  const startCapitals = 'A'.codePointAt();
  const endCapitals = 'Z'.codePointAt();
  const startSmalls = 'a'.codePointAt();
  const endSmalls = 'z'.codePointAt();

  const array = my_string.split('');
  array.map(item =&amp;gt; {
    if (item.codePointAt() &amp;gt;= startCapitals &amp;amp;&amp;amp; item.codePointAt() &amp;lt;= endCapitals) {
      alphabetArray[item.codePointAt() - startCapitals] += 1;
    } else if (item.codePointAt() &amp;gt;= startSmalls &amp;amp;&amp;amp; item.codePointAt() &amp;lt;= endSmalls) {
      alphabetArray[item.codePointAt() - startSmalls + 26] += 1;
    }
  });

  return alphabetArray;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="배열-만들기-1"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181901"&gt;배열 만들기 1&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 &lt;code&gt;n&lt;/code&gt;과 &lt;code&gt;k&lt;/code&gt;가 주어졌을 때, 1 이상 &lt;code&gt;n&lt;/code&gt;이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;n&lt;/code&gt; ≤ 1,000,000&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;k&lt;/code&gt; ≤ min(1,000, n)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = '';

rl.on('line', (line) =&amp;gt; {
  input = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(input[0], input[1]);
  console.log(answer);
});

const solution = (n, k) =&amp;gt; {
  let array = [];
  for (let i = k; i &amp;lt;= n; i += k) {
    array.push(i);
  }

  return array;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="글자-지우기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181900"&gt;글자 지우기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;my_string&lt;/code&gt;과 정수 배열 &lt;code&gt;indices&lt;/code&gt;가 주어질 때, &lt;code&gt;my_string&lt;/code&gt;에서 &lt;code&gt;indices&lt;/code&gt;의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;indices&lt;/code&gt;의 길이 &amp;lt; &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;은 영소문자로만 이루어져 있습니다&lt;/li&gt;
&lt;li&gt;0 ≤ &lt;code&gt;indices&lt;/code&gt;의 원소 &amp;lt; &lt;code&gt;my_string&lt;/code&gt;의 길이&lt;/li&gt;
&lt;li&gt;&lt;code&gt;indices&lt;/code&gt;의 원소는 모두 서로 다릅니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let my_string = '';
let n = 0;
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    my_string = line;
  } else {
    n = line.split(' ').map(Number);
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(my_string, n);
  console.log(answer);
});

const solution = (my_string, indices) =&amp;gt; {
  let answer = [...my_string];
  let sortedIndices = indices.sort((a, b) =&amp;gt; a - b);
  console.log(sortedIndices);
  for (let index in sortedIndices) {
    answer.splice(sortedIndices[index] - index, 1);
  }

  return answer.join('');
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="카운트-다운"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181899"&gt;카운트 다운&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 &lt;code&gt;start_num&lt;/code&gt;와 &lt;code&gt;end_num&lt;/code&gt;가 주어질 때, &lt;code&gt;start_num&lt;/code&gt;에서 &lt;code&gt;end_num&lt;/code&gt;까지 1씩 감소하는 수들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;0 ≤ &lt;code&gt;end_num&lt;/code&gt; ≤ &lt;code&gt;start_num&lt;/code&gt; ≤ 50&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = '';

rl.on('line', (line) =&amp;gt; {
  input = line.split(' ').map(Number);
  rl.close();
}).on('close', () =&amp;gt; {
  const answer = solution(input[0], input[1]);
  console.log(answer);
});

const solution = (start, end_num) =&amp;gt; {
  let array = [];
  for (let i = start; i &amp;gt;=end_num; i--) {
    array.push(i);
  }

  return array;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="가까운-1-찾기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181898"&gt;가까운 1 찾기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;정수 배열 &lt;code&gt;arr&lt;/code&gt;가 주어집니다. 이때 &lt;code&gt;arr&lt;/code&gt;의 원소는 1 또는 0입니다. 정수 &lt;code&gt;idx&lt;/code&gt;가 주어졌을 때, &lt;code&gt;idx&lt;/code&gt;보다 크면서 배열의 값이 1인 가장 작은 인덱스를 찾아서 반환하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;p&gt;단, 만약 그러한 인덱스가 없다면 -1을 반환합니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;3 ≤ &lt;code&gt;arr&lt;/code&gt;의 길이 ≤ 100'000
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;arr&lt;/code&gt;의 원소는 전부 1 또는 0입니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let idx = '';
let arr = [];
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    arr = line.split(' ').map(Number);
  } else {
    idx = Number(line);
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(idx, arr);
  console.log(answer);
});

const solution = (arr, idx) =&amp;gt; {
  return arr.indexOf(1, idx);
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Thu, 14 Mar 2024 01:52:59 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-11%EC%9D%BC%EC%B0%A8</guid></item><item><title>프로그래머스/Javascript : 기초 문제 10일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-10%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="문자열의-앞의-n글자"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181907"&gt;문자열의 앞의 n글자&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;my_string&lt;/code&gt;과 정수 &lt;code&gt;n&lt;/code&gt;이 매개변수로 주어질 때, &lt;code&gt;my_string&lt;/code&gt;의 앞의 &lt;code&gt;n&lt;/code&gt;글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;은 숫자와 알파벳으로 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;li&gt;1 ≤ n ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let my_string = '';
let n = 0;
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    my_string = line;
  } else {
    n = line;
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(my_string, Number(n));
  console.log(answer);
});

const solution = (my_string, n) =&amp;gt; {
  return my_string.slice(0, n);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="접두사인지-확인하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181906"&gt;접두사인지 확인하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;어떤 문자열에 대해서 접두사는 특정 인덱스까지의 문자열을 의미합니다. 예를 들어, &amp;quot;banana&amp;quot;의 모든 접두사는 &amp;quot;b&amp;quot;, &amp;quot;ba&amp;quot;, &amp;quot;ban&amp;quot;, &amp;quot;bana&amp;quot;, &amp;quot;banan&amp;quot;, &amp;quot;banana&amp;quot;입니다.
문자열 &lt;code&gt;my_string&lt;/code&gt;과 &lt;code&gt;is_prefix&lt;/code&gt;가 주어질 때, &lt;code&gt;is_prefix&lt;/code&gt;가 &lt;code&gt;my_string&lt;/code&gt;의 접두사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;is_prefix&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;과 &lt;code&gt;is_prefix&lt;/code&gt;는 영소문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let my_string = '';
let is_prefix = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    my_string = line;
  } else {
    is_prefix = line;
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(my_string, is_prefix);
  console.log(answer);
});

const solution = (my_string, is_prefix) =&amp;gt; {
  const prefix = my_string.slice(0, is_prefix.length);
  return is_prefix.length &amp;lt;= my_string.length &amp;amp;&amp;amp; prefix.includes(is_prefix) ? 1 : 0;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="문자열-뒤집기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181905"&gt;문자열 뒤집기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;my_string&lt;/code&gt;과 정수&lt;code&gt;s&lt;/code&gt;, &lt;code&gt;e&lt;/code&gt;가 매개변수로 주어질 때, &lt;code&gt;my_string&lt;/code&gt;에서 인덱스 &lt;code&gt;s&lt;/code&gt;부터 인덱스 &lt;code&gt;e&lt;/code&gt;까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;은 숫자와 알파벳으로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;li&gt;0 ≤ &lt;code&gt;s&lt;/code&gt; ≤ &lt;code&gt;e&lt;/code&gt; &amp;lt; &lt;code&gt;my_string&lt;/code&gt;의 길이&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let my_string = '';
let input = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    my_string = line;
  } else {
    input = line.split(' ').map(Number);
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(my_string, input[0], input[1]);
  console.log(answer);
});

const solution = (my_string, s, e) =&amp;gt; {
  const prefix = my_string.slice(0, s);
  const interval = my_string.slice(s, e + 1);
  let reverse = '';
  for (let i = e - s; i &amp;gt;= 0; i--) {
    reverse += interval[i];
  }
  const suffix = my_string.slice(e + 1);

  return prefix + reverse + suffix;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="세로-읽기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181904"&gt;세로 읽기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;my_string&lt;/code&gt;과 두 정수 &lt;code&gt;m&lt;/code&gt;, &lt;code&gt;c&lt;/code&gt;가 주어집니다. &lt;code&gt;my_string&lt;/code&gt;을 한 줄에 &lt;code&gt;m&lt;/code&gt; 글자씩 가로로 적었을 때 왼쪽부터 세로로 &lt;code&gt;c&lt;/code&gt;번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;은 영소문자로 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;m&lt;/code&gt; ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;li&gt;&lt;code&gt;m&lt;/code&gt;은 &lt;code&gt;my_string&lt;/code&gt; 길이의 약수로만 주어집니다.&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;c&lt;/code&gt; ≤ &lt;code&gt;m&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let my_string = '';
let input = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    my_string = line;
  } else {
    input = line.split(' ').map(Number);
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(my_string, input[0], input[1]);
  console.log(answer);
});

const solution = (my_string, m, c) =&amp;gt; {
  const array = [];
  let answer = '';
  for (let i = 0; i &amp;lt; my_string.length; i += m) {
    array.push(my_string.slice(i, i + m));
  }

  for (let i = 0; i &amp;lt; array.length; i++) {
    answer += (array[i])[c - 1];
  }

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="qr-code"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181903"&gt;qr code&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;두 정수 &lt;code&gt;q&lt;/code&gt;, &lt;code&gt;r&lt;/code&gt;과 문자열 &lt;code&gt;code&lt;/code&gt;가 주어질 때, &lt;code&gt;code&lt;/code&gt;의 각 인덱스를 &lt;code&gt;q&lt;/code&gt;로 나누었을 때 나머지가 &lt;code&gt;r&lt;/code&gt;인 위치의 문자를 앞에서부터 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;0 ≤ &lt;code&gt;r&lt;/code&gt;&amp;lt; &lt;code&gt;q&lt;/code&gt; ≤ 20&lt;/li&gt;
&lt;li&gt;&lt;code&gt;r&lt;/code&gt; &amp;lt; &lt;code&gt;code&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;li&gt;&lt;code&gt;code&lt;/code&gt;는 영소문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let code = '';
let input = '';
let count = 0;

rl.on('line', (line) =&amp;gt; {
  if (count === 0) {
    input = line.split(' ').map(Number);
  } else {
    code = line;
  }
  count++;
  if (count &amp;gt; 1) {
    rl.close();
  }
}).on('close', () =&amp;gt; {
  const answer = solution(input[0], input[1], code);
  console.log(answer);
});

const solution = (q, r, code) =&amp;gt; {
  let answer = '';
  for (let i = r; i &amp;lt; code.length; i += q) {
    answer += code[i];
  }

  return answer;
};
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Tue, 12 Mar 2024 00:47:08 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-10%EC%9D%BC%EC%B0%A8</guid></item><item><title>프로그래머스/Javascript : 기초 문제 9일차</title><link>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-9%EC%9D%BC%EC%B0%A8</link><description>&lt;h2 id="배열-만들기-5"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181912"&gt;배열 만들기 5&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 배열 &lt;code&gt;intStrs&lt;/code&gt;와 정수 &lt;code&gt;k&lt;/code&gt;, &lt;code&gt;s&lt;/code&gt;, &lt;code&gt;l&lt;/code&gt;가 주어집니다. &lt;code&gt;intStrs&lt;/code&gt;의 원소는 숫자로 이루어져 있습니다.&lt;/p&gt;
&lt;p&gt;배열 &lt;code&gt;intStrs&lt;/code&gt;의 각 원소마다 &lt;code&gt;s&lt;/code&gt;번 인덱스에서 시작하는 길이 &lt;code&gt;l&lt;/code&gt;짜리 부분 문자열을 잘라내 정수로 변환합니다. 이때 변환한 정수값이 &lt;code&gt;k&lt;/code&gt;보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;0 ≤ &lt;code&gt;s&lt;/code&gt; &amp;lt; 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;l&lt;/code&gt; ≤ 8&lt;/li&gt;
&lt;li&gt;10l - 1 ≤ &lt;code&gt;k&lt;/code&gt; &amp;lt; 10l&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;intStrs&lt;/code&gt;의 길이 ≤ 10,000
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;s&lt;/code&gt; + &lt;code&gt;l&lt;/code&gt; ≤ &lt;code&gt;intStrs&lt;/code&gt;의 원소의 길이 ≤ 120&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (intStrs, k, s, l) =&amp;gt; {
  let answer = [];
  intStrs.map(item =&amp;gt; {
    const array = item.split('');
    let number = '';
    for (let i = s; i &amp;lt; s + l; i++) {
      number += array[i];
    }
    console.log(number);
    if (Number(number) &amp;gt; k) {
      answer.push(number);
    }
  });

  return answer.map(Number);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="부분-문자열-이어-붙여-문자열-만들기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181911"&gt;부분 문자열 이어 붙여 문자열 만들기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-1"&gt;문제&lt;/h4&gt;&lt;p&gt;길이가 같은 문자열 배열 &lt;code&gt;my_strings&lt;/code&gt;와 이차원 정수 배열 &lt;code&gt;parts&lt;/code&gt;가 매개변수로 주어집니다. &lt;code&gt;parts[i]&lt;/code&gt;는 &lt;code&gt;[s, e]&lt;/code&gt; 형태로, &lt;code&gt;my_string[i]&lt;/code&gt;의 인덱스 &lt;code&gt;s&lt;/code&gt;부터 인덱스 &lt;code&gt;e&lt;/code&gt;까지의 부분 문자열을 의미합니다. 각 &lt;code&gt;my_strings&lt;/code&gt;의 원소의 &lt;code&gt;parts&lt;/code&gt;에 해당하는 부분 문자열을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_strings&lt;/code&gt;의 길이 = parts의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_strings&lt;/code&gt;의 원소의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;&lt;code&gt;parts[i]&lt;/code&gt;를 &lt;code&gt;[s, e]&lt;/code&gt;라 할 때, 다음을 만족합니다.&lt;/li&gt;
&lt;li&gt;0 ≤ &lt;code&gt;s&lt;/code&gt; ≤ &lt;code&gt;e&lt;/code&gt; &amp;lt; &lt;code&gt;my_strings[i]&lt;/code&gt;의 길이&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-1"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (my_strings, parts) =&amp;gt; {
  let answer = [];
  for (let i = 0; i &amp;lt; parts.length; i++) {
    answer.push(my_strings[i].slice(parts[i][0], parts[i][1]+1));
  }
  return answer.join('');
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="문자열의-뒤의-n글자"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181910"&gt;문자열의 뒤의 n글자&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-2"&gt;문제&lt;/h4&gt;&lt;p&gt;문자열 &lt;code&gt;my_string&lt;/code&gt;과 정수 &lt;code&gt;n&lt;/code&gt;이 매개변수로 주어질 때, &lt;code&gt;my_string&lt;/code&gt;의 뒤의 &lt;code&gt;n&lt;/code&gt;글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;은 숫자와 알파벳으로 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 1,000&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;n&lt;/code&gt; ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-2"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (my_string, n) =&amp;gt; {
  return my_string.slice(my_string.length - n);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="접미사-배열"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181909"&gt;접미사 배열&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-3"&gt;문제&lt;/h4&gt;&lt;p&gt;어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, &amp;quot;banana&amp;quot;의 모든 접미사는 &amp;quot;banana&amp;quot;, &amp;quot;anana&amp;quot;, &amp;quot;nana&amp;quot;, &amp;quot;ana&amp;quot;, &amp;quot;na&amp;quot;, &amp;quot;a&amp;quot;입니다.
문자열 &lt;code&gt;my_string&lt;/code&gt;이 매개변수로 주어질 때, &lt;code&gt;my_string&lt;/code&gt;의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;은 알파벳 소문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-3"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (my_string) =&amp;gt; {
  let answer= []
  for (let i = 1; i &amp;lt;= my_string.length; i++) {
    answer.push(my_string.slice(my_string.length - i));
  }

  return answer.sort();
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="접미사인지-확인하기"&gt;&lt;a href="https://school.programmers.co.kr/learn/courses/30/lessons/181908"&gt;접미사인지 확인하기&lt;/a&gt;&lt;/h2&gt;&lt;h4 id="문제-4"&gt;문제&lt;/h4&gt;&lt;p&gt;어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, &amp;quot;banana&amp;quot;의 모든 접미사는 &amp;quot;banana&amp;quot;, &amp;quot;anana&amp;quot;, &amp;quot;nana&amp;quot;, &amp;quot;ana&amp;quot;, &amp;quot;na&amp;quot;, &amp;quot;a&amp;quot;입니다.
문자열 &lt;code&gt;my_string&lt;/code&gt;과 &lt;code&gt;is_suffix&lt;/code&gt;가 주어질 때, &lt;code&gt;is_suffix&lt;/code&gt;가 &lt;code&gt;my_string&lt;/code&gt;의 접미사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;제한사항
&lt;ul&gt;
&lt;li&gt;1 ≤ &lt;code&gt;my_string&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;1 ≤ &lt;code&gt;is_suffix&lt;/code&gt;의 길이 ≤ 100&lt;/li&gt;
&lt;li&gt;&lt;code&gt;my_string&lt;/code&gt;과 &lt;code&gt;is_suffix&lt;/code&gt;는 영소문자로만 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="소스-코드-4"&gt;소스 코드&lt;/h4&gt;&lt;pre&gt;&lt;code class="language-javascript"&gt;const solution = (my_string, is_suffix) =&amp;gt; {
  const suffix = my_string.slice(my_string.length - is_suffix.length);
  return suffix.includes(is_suffix) ? 1 : 0;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;is_suffix&lt;/code&gt; 길이 만큼 뒤에서 &lt;code&gt;slice&lt;/code&gt;해준 다음 문자열 포함 여부를 확인하면 된다.&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Sun, 03 Mar 2024 19:43:10 +0900</pubDate><guid>http://blex.me/@laetipark/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EC%A0%9C-9%EC%9D%BC%EC%B0%A8</guid></item></channel></rss>