<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>laetipark (박동훈)</title><link>https://blex.me/@laetipark</link><description>es laetus🙂</description><atom:link href="https://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>https://blex.me/@laetipark</link></image><item><title>구글 SEO(검색엔진 최적화) 개념 정리</title><link>https://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 alt="SEO를 하는 이유" 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"/&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 alt="" 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"/&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 alt="" 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"/&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 alt="" 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"/&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 alt="" 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"/&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 alt="제목(Title)과 메타 설명(Meta Description)" 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"/&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="ko"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;제목&amp;lt;/title&amp;gt;
    &amp;lt;meta name="description" content="설명" /&amp;gt;
    &amp;lt;meta name="keywords" content="키워드" /&amp;gt;
    &amp;lt;meta property="og:title" content="제목" /&amp;gt;
    &amp;lt;meta property="og:description" content="설명" /&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 alt="주요 키워드 강조 방식 표" 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"/&gt;&lt;/li&gt;
&lt;li&gt;이미지 alt 속성
&lt;pre&gt;&lt;code class="language-html"&gt;&amp;lt;img src="이미지 주소" alt=""&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>https://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>https://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 alt="" 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"/&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 alt="" 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"/&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 alt="" 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"/&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 alt="" 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"/&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 alt="" 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"/&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 = `["1", "+", "2",  "/", "3", "*", "(", "4", "+", "5", ")"]`; // 중위 표기법

// 중위 표기법을 후위 표기법으로 전환
let output = [];
let operatorStack = [];
let operators = {
  "+": 1,
  "‑": 1,
  "*": 2,
  "/": 2,
  "%": 2,
  "^": 3, // 제곱 연산자
  "=": 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] !== "("
    ) { // operatorStack top에 연산자 우선순위가 token보다 높은 경우 pop하여 output에 push
      output.push(operatorStack.pop());
    }
    operatorStack.push(token); // operatorStack에 push
  } else if (token === "(") { // 여는 괄호인 경우 operatorStack에 push
    operatorStack.push(token);
  } else if (token === ")") { // 닫는 괄호인 경우 여는 괄호가 나오거나 operatorStack가 비워질 때까지 operatorStack에서 pop 후 output에 push
    while (
      operatorStack.length &amp;gt; 0 &amp;amp;&amp;amp;
      operatorStack[operatorStack.length - 1] !== "("
    ) {
      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 "+":
        stack.push(operand1 + operand2);
        break;
      case "‑":
        stack.push(operand1 - operand2);
        break;
      case "*":
        stack.push(operand1 * operand2);
        break;
      case "/":
        stack.push(operand1 / operand2);
        break;
      case "%":
        stack.push(operand1 % operand2);
        break;
      case "^": // 제곱 연산자
        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>https://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>https://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;이 "0"으로만 이루어진 경우는 없습니다.&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;부분 문자열이란 문자열에서 연속된 일부분에 해당하는 문자열을 의미합니다. 예를 들어, 문자열 "ana", "ban", "anana", "banana", "n"는 모두 문자열 "banana"의 부분 문자열이지만, "aaa", "bnana", "wxyz"는 모두 "banana"의 부분 문자열이 아닙니다.&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>https://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>https://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 alt="" 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"/&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 alt="" 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"/&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("li")) {
            //   item.addEventListener("click", (e) =&amp;gt; {
            //      console.log(e.target.innerText);
            //   });
            // }
            
            // 이벤트 위임을 사용한 코드
            const list = document.querySelector("ul");

            list.addEventListener("click", (e) =&amp;gt; {
                if (e.target.tagName === "LI") {
                    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>https://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>https://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 alt="" 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"/&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 alt="tsconfig.json" 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"/&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>https://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>https://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(
    `"안녕하세요 저는 ${this.name}이라고 합니다! 나이는 ${this.age}이고, 직업은 ${this.job}입니다."`
  );
};

// Person에 대한 객체 생성(pdh 기준으로 상위 객체는 Person)
const pdh = new Person();
pdh.setData("DongHun Park", "26", "programmer");
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(
    `"안녕하세요 저는 ${this.name}이라고 합니다! 나이는 ${this.age}이고, 직업은 ${this.job}입니다."`
  );
};

...
// (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(
    `"안녕하세요 저는 ${this.name}이라고 합니다! 나이는 ${this.age}이고, 직업은 ${this.job}입니다."`
  );
};

const pdh = new Person();
pdh.setData("DongHun Park", "26", "programmer");

// 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>https://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>https://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 = "hello"; // 전역 변수

function show(){
    var localVar = "hi"; // 지역 변수

    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 = "hello";

// 재정의
x = "world";

// 재선언
var x = "hello world";
&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 = "hello";
if (true) {
    var say = "hi";
}

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 = "hello";
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>https://blex.me/@laetipark/javascript-var-let-const-%EC%8A%A4%EC%BD%94%ED%94%84</guid></item><item><title>프로그래머스/Javascript : 기초 문제 21일차</title><link>https://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>https://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>https://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>https://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>https://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;임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다.&lt;/p&gt;
&lt;p&gt;예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다.&lt;/p&gt;
&lt;p&gt;문자열 &lt;code&gt;myStr&lt;/code&gt;이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;p&gt;단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 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 ? ["EMPTY"] : 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>https://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>https://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;을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 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;을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 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;은 "&lt;code&gt;a&lt;/code&gt; &lt;code&gt;op&lt;/code&gt; &lt;code&gt;b&lt;/code&gt;" 형태의 이항식이고 &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;문자 "A"와 "B"로 이루어진 문자열 &lt;code&gt;myString&lt;/code&gt;과 &lt;code&gt;pat&lt;/code&gt;가 주어집니다. myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 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;는 문자 "A"와 "B"로만 이루어진 문자열입니다.&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'과 "rn"이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다. 문자열 &lt;code&gt;rny_string&lt;/code&gt;이 주어질 때, &lt;code&gt;rny_string&lt;/code&gt;의 모든 'm'을 "rn"으로 바꾼 문자열을 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>https://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>https://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;가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 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>https://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>https://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;에서 알파벳 "a"가 등장하면 전부 "A"로 변환하고, "A"가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 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>https://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>https://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;단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다.&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>https://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>https://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>https://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>https://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;에는 "u", "d", "l", "r" 네 개의 문자열이 여러 개 저장되어 있습니다. &lt;code&gt;str_list&lt;/code&gt;에서 "l"과 "r" 중 먼저 나오는 문자열이 "l"이라면 해당 문자열을 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를, 먼저 나오는 문자열이 "r"이라면 해당 문자열을 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를 return하도록 solution 함수를 완성해주세요. "l"이나 "r"이 없다면 빈 리스트를 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;는 "u", "d", "l", "r" 네 개의 문자열로 이루어져 있습니다.&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>https://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>https://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>https://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>https://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>https://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>https://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;어떤 문자열에 대해서 접두사는 특정 인덱스까지의 문자열을 의미합니다. 예를 들어, "banana"의 모든 접두사는 "b", "ba", "ban", "bana", "banan", "banana"입니다.
문자열 &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>https://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>https://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;어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 &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;어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 &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>https://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>