<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Jag.log</title>
        <link>https://velog.io/</link>
        <description>QA Engineer</description>
        <lastBuildDate>Mon, 09 Dec 2024 10:43:06 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>Jag.log</title>
            <url>https://velog.velcdn.com/images/jag_00/profile/f4b9c1ca-6904-4268-8564-98fa5e9632d1/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. Jag.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jag_00" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[QA Study 계획서]]></title>
            <link>https://velog.io/@jag_00/Study-%EA%B3%84%ED%9A%8D%EC%84%9C</link>
            <guid>https://velog.io/@jag_00/Study-%EA%B3%84%ED%9A%8D%EC%84%9C</guid>
            <pubDate>Mon, 09 Dec 2024 10:43:06 GMT</pubDate>
            <description><![CDATA[<p>우선 아래의 이름과 같은 계획서를 작성해봤다.</p>
<blockquote>
<h3 id="okr-qa-업무-증진-study-계획서">[OKR]: QA 업무 증진 Study 계획서</h3>
<p>개발 단계별 테스트 프로세스를 구축하고, 테스트 관계자들(개발자, QM)이 실무에 적용할 수 있도록 하기 위해 [부트캠프: QA편] 도서를 기반으로 Study를 진행하려고 한다.</p>
</blockquote>
<p>여러 팀원분과 이야기를 &#39;잠깐&#39; 나누어본 결과, 소프트웨어 테스트에 대해서 잘 알고 계시지 않다는 걸 깨달았다.</p>
<p>그래서 실무에 직접 적용하면서 습득할 수 있도록 실습도 할 예정이고, 추후에 교육도 진행하면 정말 좋을 것 같다.</p>
<hr>
<h3 id="📌-핵심-목표-list">📌 핵심 목표 List</h3>
<ol>
<li>QA의 핵심 개념과 실무 프로세스를 빠르게 이해시킴</li>
<li>동료(기획, 개발, 테스터)가 QA 지식을 바로 실무에 적용할 수 있는 능력을 갖추도록 지원</li>
<li>학습의 부담을 줄이면서도, 팀 내 QA 협업 능력 강화</li>
<li>QM 직무의 전문성 강화을 위한 교육 수강</li>
<li>소프트웨어 테스트와 관련된 자격증 취득</li>
</ol>
<hr>
<h3 id="🎈-효과적인-스터디로-만드는-방법">🎈 효과적인 스터디로 만드는 방법</h3>
<h4 id="1----현업과의-연결성-강화">1.    현업과의 연결성 강화</h4>
<ul>
<li>매주 학습 내용이 회사 업무와 직접 연결되도록 목표를 명확히 설정</li>
<li>예를 들어, &quot;우리 회사의 테스트 설계 기법을 개선하기 위한 새로운 기준&quot;이나 &quot;현재 API 테스트 프로세스 점검 및 개선&quot;을 목표로 설정</li>
</ul>
<h4 id="2----즉시-실행-가능한-결과물-도출">2.    즉시 실행 가능한 결과물 도출</h4>
<ul>
<li>매주 학습한 내용을 기반으로, 회사 프로세스에 적용할 구체적인 산출물을 만들도록 함</li>
<li>예:
✍🏻 테스트 케이스 예시 작성 → 회사 제품에 적용
✍🏻 예외 케이스 발견 → 실제 시나리오에 반영</li>
</ul>
<h4 id="3----비효율적-활동-최소화">3.    비효율적 활동 최소화</h4>
<ul>
<li>발표와 요약에 시간을 너무 많이 쓰지 않도록
✍🏻 발표 시간은 5~10분 내로 제한하고, 토론과 실습에 더 많은 시간을 투자</li>
<li>책의 전체 내용을 커버하려는 대신, 회사에서 가장 필요한 부분만 선택적으로 학습</li>
</ul>
<h4 id="4----팀-내-도메인-지식과-qa-지식의-융합">4.    팀 내 도메인 지식과 QA 지식의 융합</h4>
<ul>
<li>QA에 익숙하지 않은 팀원이 도메인 지식을 활용해 현업에서의 테스트 가능성을 제안하도록 유도</li>
<li>QA 지식을 가진 사람은 효율적이고 체계적인 테스트 방법을 안내</li>
</ul>
<hr>
<h3 id="👍🏻회고">👍🏻회고</h3>
<p>위의 핵심 <strong>[📌핵심 목표 List]</strong>와 <strong>[🎈효과적인 스터디로 만드는 방법]</strong>을 기준으로 Study를 진행할 예정이다.</p>
<p>계획을 하면서 깨닫게 된 것과 팀원분들과 대화하면서 깨닫게 된 내용으로는 </p>
<h3 id="span-stylecolore63674지식은-공유해야한다span"><span style="color:#e63674">&quot;지식은 공유해야한다.&quot;</span></h3>
<p>이다.  </p>
<p>1석 2조를 좋아하는 편인데, </p>
<ol>
<li>나도 공부하고</li>
<li>팀원들에게 공유도 하고</li>
<li>실무에 적용해보며 경험 쌓고</li>
</ol>
<p>무려 1석 3조다. 어디가서 이런 경험을 해보겠나 싶다.</p>
<p>좀 긴 여정이 될 듯 하지만, 여러 곳에서 도움도 구하면서 나도 성장하고 내가 다니는 회사도 성장하면 얼마나 좋겠는가 싶다~</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[OKR]]></title>
            <link>https://velog.io/@jag_00/OKR</link>
            <guid>https://velog.io/@jag_00/OKR</guid>
            <pubDate>Mon, 02 Dec 2024 10:31:26 GMT</pubDate>
            <description><![CDATA[<hr>
<h3 id="span-stylebackground-color-db7093topicspan-문제점-파악"><span style="background-color: #db7093">Topic</span>: 문제점 파악</h3>
<p>  현 회사에 적응하고 있는 와중에 몇 가지 개선하고 싶은 사항들을 발견하기 시작했다.</p>
<h5 id="벌써"><del>벌써..?</del></h5>
<br>

<h3 id="1-개발-단계-별-테스트-프로세스-미확립">1. 개발 단계 별 테스트 프로세스 미확립</h3>
<p>한정적인 개발 인원으로
** 1) 신규 기능 개발**
** 2) 기존 기능 수정**
** 3) 정기 배포** (Web은 매주 1번, App은 한달에 한번)
위의 3가지 업무를 수행하고 계시다 보니,
계획되지 않은 테스트가 그때 그때마다 수행되고 있었다.
<br></p>
<h3 id="2-너무-많은-회의-횟수">2. 너무 많은 회의 횟수</h3>
<p>도메인 특성 상 국가적인 규제들이 빠르게 생성, 수정되면서 특정 프로그램의 담당 PM, 개발자(프론트/백엔드), 디자이너 분들 모두가 회의 참석이 필수적이고, 횟수도 많다.</p>
<p>  위의 내용은 회의가 필요한 사유로 충분하지만,
  문제는</p>
<h4 id="1-회의전에-공유되지-않아-회의-진행-중에-브레인-스토밍을-한다">1) 회의전에 공유되지 않아 회의 진행 중에 브레인 스토밍을 한다.</h4>
<h4 id="2-공유되더라도-미리-읽어보고-의견을-정리해-오지-않는다">2) 공유되더라도 미리 읽어보고 의견을 정리해 오지 않는다.</h4>
<br>
앞의 이유와 더불어, 기획하고 개발하는데에도 많은 시간이 드는데 
1) 정기 배포
2) 기능적 VoC 해결
3) 마감 기한
등의 사유로 일하기에도 시간이 빠듯하다.

<p>그런데, 테스트가 계획대로 이루어지지 않으니, 불필요한 브리핑 회의까지 추가된다.</p>
<h5 id="👍🏻그래도-여기서-중점적으로-봐야할-점은-서로-의견을-잘-나누면서-수용하는-자세가-있는-팀원들이라는-것-👍🏻">👍🏻그래도, 여기서 중점적으로 봐야할 점은 서로 의견을 잘 나누면서 수용하는 자세가 있는 팀원들이라는 것 👍🏻</h5>
<br>



<h3 id="3-전문가-실종">3. 전문가 실종(?)</h3>
<p>이건 좀 눈물 많이 나는데, 나 아직 1년 주니어 QA 엔지니어다.
아직 할 줄 아는 것도 많이 없고, 식견도 없는데...
운영 상태를 확인해보면 10년차 QA 마스터님께서 등판하셔야 해결될 일 같다.</p>
<p>진짜 막막하긴 하다....</p>
<h6 id="🥕🥕🥕🥕원래도-삽질은-많이-했긴-해🥕🥕🥕🥕"><del>(🥕🥕🥕🥕원래도 삽질은 많이 했긴 해..🥕🥕🥕🥕)</del></h6>
<br>


<h3 id="4-테스트-이론을-애매하게-알고-있다">4. 테스트 이론을 애매하게 알고 있다.</h3>
<p>우선 대명사(?)를 나와는 다르게 이해하고 사용하고 계신다.
IT 업계에서 의사소통이 중요한 이유는 하나의 단어(영단어로 되어 있거나)가 여러가지 의미를 내포하고 있기 때문에 모두가 이해할 수 있게 이야기 하는 것이라고 알고 있다.</p>
<blockquote>
<h4 id="1-기능-단위-테스트">1) 기능 단위 테스트(?)</h4>
<p>기능 테스트인지 단위 테스트인지 알 수 없는 이 단어는..
회의 내용을 자세히 들어보니, 이미 <strong>&#39;UI/UX에 입혀놓은 상태에서 버튼 하나의 단위&#39;</strong> 로 사용된다. </p>
</blockquote>
<p>원래 단위 테스트(Unit Test)란 소스코드의 특정 모듈(프로그램 내 하나의 기능)이 의도된 대로 정확히 작동하는지 검증 하는 절차로, 크기는 <strong>함수, 메서드, 개별 코드 등</strong> 작은 단위에 대해 테스트 케이스로 분리하고 테스트 코드를 작성하여 테스트 하는것으로 알고 있다.</p>
<blockquote>
<h4 id="2-통합-테스트">2) 통합 테스트</h4>
<p>  얘는 맞는 말인데 왜 적었냐고?
  신규 기능 개발에서 통합테스트를 진행하는 것이 아니라, 
  이미 판매까지 하고 있는 완성된 제품을 테스트하는데 사용되기 때문이다.</p>
</blockquote>
<p>  통합 테스트(Integration Test)란 모듈을 통합하는 과정에서 모듈 간 인터페이스가 올바르게 작동하는지를 테스트하는 것을 말한다. 일반적인 웹 어플리케이션은 프레임워크, 라이브러리, 데이터베이스, 구현한 코드가 주요 통합 테스트 대상이 된다.</p>
<blockquote>
<h4 id="3-테스트-계획서">3) 테스트 계획서</h4>
<p>  얘도 있는 말인데 무슨 문제냐구??
  테스트 계획서에 테스트 케이스를 작성하며 만들어 지는데, 
  이 계획서를 끝으로 더이상의 새로운 TC는 없다.</p>
</blockquote>
  <br>
  명확하게 수립해야할 필요도 있고, 필수 산출물들도 없는 상태라 할 일이 많아 보인다.^^


<h4 id="span-stylecolor-red나는-1년-경력의-주니어-qa-엔지니어라-변화를-주려면-많은-시간이-들-것-같다"><span style="color: red">나는 1년 경력의 <strong>주니어 QA 엔지니어</strong>라 변화를 주려면 많은 시간이 들 것 같다.</h4>
<h4 id="span-stylecolor-red시간이-많이-들더라도-명확한-프로세스를-만들면-지금보다는-나아질-것이라고-본다span"><span style="color: red">시간이 많이 들더라도, 명확한 프로세스를 만들면 지금보다는 나아질 것이라고 본다.</span></h4>
<hr>
<h3 id="span-stylebackground-color-db7093resultspan"><span style="background-color: #db7093">Result</span></h3>
<p>앞으로 현 회사에서 해야할 업무들을 스스로 정리해보았다.</p>
<h3 id="1-테스트-프로세스-확립"><strong>1. 테스트 프로세스 확립</strong></h3>
<p>테스트 프로세스라고 하면 좀 막연하긴 한데, 큰 종류로 3가지로 나눴다.
<strong>1) 신규 기능 테스트 프로세스</strong>
<strong>2) 기능 수정 테스트 프로세스</strong>
<strong>3) 정기 테스트 프로세스</strong></p>
<blockquote>
<h3 id="devops">DevOps</h3>
<p><img src="https://velog.velcdn.com/images/jag_00/post/211fff7a-9302-437a-910f-7169ce761d09/image.png" alt="">
(출처: <a href="https://hypemarc.com/devops/">https://hypemarc.com/devops/</a>)</p>
</blockquote>
<blockquote>
<h3 id="v-모델">V-모델</h3>
<p><img src="https://velog.velcdn.com/images/jag_00/post/570d90e8-06a8-40ae-9417-71d5d1e49266/image.png" alt="">
(출처: <a href="https://notedailyit.co.kr/">https://notedailyit.co.kr/</a>)</p>
</blockquote>
<p>직군은 QM 이라고 주어졌지만, 실제 역할은 QA, QI, QC, QM 의 업무를 다 한다고 보면 되겠다.</p>
<p>프로세스는 기존에 근무하고 계신 사수분께서 초안의 형식으로 만들어 놓으셨다. 
그래서 수정하면서 구체적으로 확립하면 된다고 생각했다.</p>
<h3 id="2-프로세스-단계별-산출물-정의">2. 프로세스 단계별 산출물 정의</h3>
<p>테스트 프로세스의 초안을 보아하니 산출물들의 상태가 이상하다.
&#39;테스트 계획서&#39;라고 적혀있지만, 실제 내용은 &#39;테스트 케이스&#39;이다.
요구 사항에 맞게 기능 개발도 안되어 있는 상황에서 어떤걸 보고 시스템 테스트의 TC를 작성하겠다는 것인가.
테스트 단계별로 프로세스를, 수행 담당자를 정의할 필요가 있어 보인다.</p>
<h3 id="3-상용중인-프로그램-전반적인-테스트">3. 상용중인 프로그램 전반적인 테스트</h3>
<p>실제로 프로그램을 테스트 해보면서 프로세스, 산출물, 양식 등을 확립할 필요해 보인다.</p>
<p>현재 Quality Assurance나 Quality Management 라는 태그는 아마 이런 활동을 주로 다루며 작성할 것 같다. </p>
<p>기술에 대한 이론 정의 내용과 실제로 투입한 상황을 기록할 예정인데, 너무 구체적인 내용이 작성된다면 비공개 글로 전환할 수 도 있을 것 같다.</p>
<h3 id="4-테스트-자동화">4. 테스트 자동화</h3>
<p>정기적인 배포가 Web 과 실행 프로그램으로 두 가지 정도 된다.</p>
<p>고정적인 프로그램의 정기적인 배포에는 자동화가 필수라고 생각한다.</p>
<p>이 바쁜 현대 사회에 할 일도 많은데 매번 같은 업무로 시간을 낭비할 수는 없다.
자동화 프로그램에 대해서도 찾아볼 것이 많겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Re: 제로부터 시작하는 QM/QA 생활]]></title>
            <link>https://velog.io/@jag_00/Re%EC%A0%9C%EB%A1%9C%EB%B6%80%ED%84%B0%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94QMQA%EC%83%9D%ED%99%9C</link>
            <guid>https://velog.io/@jag_00/Re%EC%A0%9C%EB%A1%9C%EB%B6%80%ED%84%B0%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94QMQA%EC%83%9D%ED%99%9C</guid>
            <pubDate>Mon, 25 Nov 2024 13:10:25 GMT</pubDate>
            <description><![CDATA[<hr>
<h2 id="🤷🏻게임-개발을-준비하다가--sw-품질-검증-직군에-간-썰">🤷🏻‍[게임 개발을 준비하다가  SW 품질 검증 직군에 간 썰]</h2>
<p>열심히 C#과 Unity를 공부하다가 우연히 SW 품질 검증 회사에서 제안이 왔다.
해당 제안을 받아들인 이유는 <span style='background-color: #f6b1d0'><strong>두 가지</strong></span> 정도 있다.
<br></p>
<h3 id="💵-span-stylebackground-color-f8d465-돈을-벌어야-했다span">💵 <span style='background-color: #f8d465'> 돈을 벌어야 했다.</span></h3>
<p>대학생 신분때는 알바와 적절한 부모님의 지원이 있었지만, 졸업하고 나서는 죄송한 마음이 많이 들었기 때문에 빨리 취업을 하고 싶었다.
최대한 내가 꿈꾸는 직업군을 선택하고 싶었지만 세상은 계획대로 흘러가지 않는 법...</p>
<h6 id="무계획이-계획이다"><del>(무계획이 계획이다)</del></h6>
<br>


<h3 id="✍🏻-span-stylebackground-color-56bcd2pm이-최종-목표-직군-이었다">✍🏻 <span style='background-color: #56bcd2'>PM이 최종 목표 직군 이었다.</h3>
<p>게임 개발을 공부하면서 팀(프론트 2명, 백엔드 1명, 디자인 3명, 기획자 1명)을 꾸려 
  <strong>간이 프로젝트</strong>를 만들어 본 경험을 할 수 있게 되었다.</p>
<p> 프로젝트 전체를 관리하는 인력(PM, QM 등)들의 역할이 분명하지 않고, 능력치 또한 낮았기 때문에 프로젝트가 망한 경우를 겪어 보았다.</p>
<h6 id="개발자-입장에서-삽질-하는-기분은-썩-좋지-않았다"><del>(개발자 입장에서 &#39;삽질&#39; 하는 기분은 썩 좋지 않았다.)</del></h6>
  <br>

<h5 id="위와-같은-경험들을-겪으니-프로젝트를-더욱-견고하게-만들어-주는-pm의-직군이-매력적으로-다가왔고-더-나아가">위와 같은 경험들을 겪으니 &quot;프로젝트를 더욱 견고하게 만들어 주는 PM의 직군&quot;이 매력적으로 다가왔고, 더 나아가</h5>
<blockquote>
<p>✅ <strong><em>프로그램을 전반적으로 해석</em></strong>
✅ <strong><em>프로세스의 이해와 구축</em></strong>
✅ <strong><em>요구사항을 만족하는지의 척도</em></strong>
✅ <strong><em>결함 판단의 기준</em></strong></p>
</blockquote>
<h5 id="에-대한-실무-기술이-궁금했다">에 대한 실무 기술이 궁금했다.</h5>
<p>그래서 <strong>QA엔지니어</strong>의 역할이 <strong>PM</strong>으로 가는 초행길에 도움이 될 것이라고 생각했다.</p>
<hr>
<h3 id="📌-span-stylebackground-color-f6b1d0대구202308---202411span">📌 <span style='background-color: #f6b1d0'>대구<del>(2023.08 - 2024.11)</del></span></h3>
<h5 id="에서-qa-엔지니어로서-근-1년간--근무했다">에서 QA 엔지니어로서 근 1년간  근무했다.</h5>
<h6 id="관련-경력-기술서는-추후에-linkedin에-업데이트-한-후-에-url을-올릴-예정이다"><del>관련 경력 기술서는 추후에 LinkedIn에 업데이트 한 후 에 URL을 올릴 예정이다.</del></h6>
<h3 id="📌-span-stylebackground-color-f6b1d0부산202411---span">📌 <span style='background-color: #f6b1d0'>부산<del>(2024.11 - )</del></span></h3>
<h5 id="의-해운선박-sw-개발-회사에서-qm-포지션의-제안이-왔다">의 해운/선박 SW 개발 회사에서 QM 포지션의 제안이 왔다.</h5>
<h5 id="이-회사의-프로그램에-대해-품질-검증을-수행해-본-경험이-있었기-때문에-마음에-들어하시지-않았나-싶다">이 회사의 프로그램에 대해 품질 검증을 수행해 본 경험이 있었기 때문에 마음에 들어하시지 않았나 싶다.</h5>
<h5 id="너무-어려운-도메인을-다루는-sw-회사로-이직을-하게-되었다">너무 어려운 도메인을 다루는 SW 회사로 이직을 하게 되었다.</h5>
<h6 id="별-탈-없이-이사를-마쳤고-쉴-틈-없이-부산이라는-땅에-적응을-해-나아가고-있다겨우-3일간"><del>별 탈 없이? 이사를 마쳤고, 쉴 틈 없이 &#39;부산&#39;이라는 땅에 적응을 해 나아가고 있다.(겨우 3일간)</del></h6>
<hr>
<h3 id="🏹결론-velog-라는-기록지를-이용해서">🏹결론: Velog 라는 기록지를 이용해서</h3>
<h4 id="span-stylebackground-color-f8d4651-새로운-땅에서의-적응"><span style='background-color: #f8d465'>1. 새로운 땅에서의 적응</h4>
<h4 id="span-stylebackground-color-f8d4652-qm-업무에-대한-계획과-회고"><span style='background-color: #f8d465'>2. QM 업무에 대한 계획과 회고</h4>
<h4 id="span-stylebackground-color-f8d4653-내-삶의-프로세스를-구축"><span style='background-color: #f8d465'>3. 내 삶의 프로세스를 구축</h4>
<h5 id="하는-것이-나의-목표이다">하는 것이 나의 목표이다.</h5>
<h6 id="우선은-velog-사용법-부터-차근-차근-익혀야-겠지만-ㅎ"><del>(우선은 Velog 사용법 부터 차근 차근 익혀야 겠지만.. ㅎ)</del></h6>
  <br>

<p>  다음 글 부터는 계획에 회고를 곁들인.. 내용을 작성하지 않을까 싶다!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# : 11654번 (아스키 코드)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-11654%EB%B2%88-%EC%95%84%EC%8A%A4%ED%82%A4-%EC%BD%94%EB%93%9C</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-11654%EB%B2%88-%EC%95%84%EC%8A%A4%ED%82%A4-%EC%BD%94%EB%93%9C</guid>
            <pubDate>Wed, 09 Aug 2023 07:27:47 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;

namespace BaekjoonTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string a = Console.ReadLine();
            char b = a[0];
            Console.WriteLine(b+0);
        }
    }
}
</code></pre>
<p>난 이렇게 풀었는데..
<del>5452KB / 60ms</del></p>
<pre><code class="language-cs">//첫째 줄에 입력받은 문자를 아스키 코드로 출력한다.
    char a = Convert.ToChar(Console.ReadLine());
    int ascii = Convert.ToInt32(a);
    Console.WriteLine(ascii);</code></pre>
<p>Convert를 사용하는 문제였을까
<del>5480KB / 64ms</del></p>
<p>메모리랑 걸린 시간을 보면 Convert를 사용하지 않는게 더 나은 느낌이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# : 2908번 (상수)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-2908%EB%B2%88-%EC%83%81%EC%88%98</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-2908%EB%B2%88-%EC%83%81%EC%88%98</guid>
            <pubDate>Wed, 09 Aug 2023 07:27:04 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;

namespace BaekjoonTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] s = Console.ReadLine().Split();
            string a = s[0];
            string b = s[1];

            char[] aReverse = new char[a.Length];
            int al = a.Length-1;

            char[] bReverse = new char[b.Length];
            int bl = b.Length - 1;

            for(int i = 0; i &lt; a.Length; i++)
            {
                aReverse[al--] = a[i];
                bReverse[bl--] = b[i];
            }

            string aValue = new string(aReverse);
            string bValue = new string(bReverse);

            if(int.Parse(aValue)&gt; int.Parse(bValue))
            {
                Console.WriteLine(aValue);
            }
            else
            {
                Console.WriteLine(bValue);
            }
        }
    }
}
</code></pre>
<p>처음엔 이렇게 풀이 했음</p>
<p>입력 :734 125 </p>
<p>string[]s = Console.ReadLine().Split(); 하게되면
s[0][[s[0].length]에는  734(길이 : 3)
s[1][[s[1].length]에는  125(길이 : 3)이 들어감</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# : 1546번 (평균)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-1546%EB%B2%88-%ED%8F%89%EA%B7%A0</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-1546%EB%B2%88-%ED%8F%89%EA%B7%A0</guid>
            <pubDate>Mon, 17 Jul 2023 02:25:40 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;

namespace BaekjoonTest
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            string[] nums = Console.ReadLine().Split();

            int i; float sum = 0f; int max = int.MinValue;
            for(i = 0; i&lt;n; i++)
            {
                int num = int.Parse(nums[i]);
                if (num &gt; max)
                {
                    max = num;
                }
            }

            for(i = 0; i&lt;n; i++)
            {
                float num = float.Parse(nums[i]);
                if (num &lt;= max)
                {
                    num = num/max * 100;
                    sum += num;
                }
            }
            Console.WriteLine(sum/n);
        }
    }
}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# : 10811번(바구니 뒤집기)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10811%EB%B2%88%EB%B0%94%EA%B5%AC%EB%8B%88-%EB%92%A4%EC%A7%91%EA%B8%B0</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10811%EB%B2%88%EB%B0%94%EA%B5%AC%EB%8B%88-%EB%92%A4%EC%A7%91%EA%B8%B0</guid>
            <pubDate>Mon, 17 Jul 2023 02:25:16 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;

namespace BaekjoonTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] nm = Console.ReadLine().Split();

            int n = int.Parse(nm[0]);
            int m = int.Parse(nm[1]);

            int[] N = new int[n];

            int i;
            int temp;
            for(i = 0; i &lt; N.Length; i++)
            {
                N[i] = i + 1;
            }
            for(i = 0; i&lt;m; i++)
            {
                string[] ab = Console.ReadLine().Split();
                int a = int.Parse(ab[0])-1;
                int b = int.Parse(ab[1])-1;

                while (a &lt; b)
                {
                    temp = N[a];
                    N[a++] = N[b];
                    N[b--] = temp;
                }
            }
            for(i = 0; i &lt; N.Length; i++)
            {
                Console.Write(N[i] + &quot; &quot;);
            }
        }
    }
}</code></pre>
<p>출력 조건에 유의하자.. 띄어쓰기 때문에 6번이나 고쳤다.........</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# - 10813번: (공 바꾸기)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10813%EB%B2%88-%EA%B3%B5-%EB%B0%94%EA%BE%B8%EA%B8%B0</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10813%EB%B2%88-%EA%B3%B5-%EB%B0%94%EA%BE%B8%EA%B8%B0</guid>
            <pubDate>Fri, 07 Jul 2023 11:27:44 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;

namespace baekjoontest
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] nm = Console.ReadLine().Split();

            int n = int.Parse(nm[0]);
            int m = int.Parse(nm[1]);

            int[] N = new int[n + 1];
            N[0] = 0;
            for (int q = 1; q &lt;= n; q++)
            {
                N[q] = q;
            }

            int temp;
            for(int q = 0; q &lt; m; q++)
            {
                string[] ij = Console.ReadLine().Split();

                int i = int.Parse(ij[0]);
                int j = int.Parse(ij[1]);

                temp = N[i];
                N[i] = N[j];
                N[j] = temp;
            }
            for(int q = 1; q &lt;= n; q++)
            {
                Console.Write(N[q] + &quot; &quot;);
            }
        }
    }
}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# - 10810번: (공 넣기)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10810%EB%B2%88-%EA%B3%B5-%EB%84%A3%EA%B8%B0</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10810%EB%B2%88-%EA%B3%B5-%EB%84%A3%EA%B8%B0</guid>
            <pubDate>Fri, 07 Jul 2023 11:16:16 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;

namespace baekjoontest
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] nm = Console.ReadLine().Split();

            int n = int.Parse(nm[0]); 
            int[] N = new int[n+1];

            int m = int.Parse(nm[1]);

            for (int q = 0; q&lt;m; q++)
            {
                string[] input = Console.ReadLine().Split();

                int i;
                int j = int.Parse(input[1]);
                int k = int.Parse(input[2]);

                for(i = int.Parse(input[0]); i &lt;= j; i++)
                {
                    N[i] = k;
                }
            }

            for(int q = 1; q &lt;= n; q++)
            {
                Console.Write(N[q]+&quot; &quot;);
            }
        }
    }
}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# : 2562번 (최댓값)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-2562%EB%B2%88-%EC%B5%9C%EB%8C%93%EA%B0%92</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-2562%EB%B2%88-%EC%B5%9C%EB%8C%93%EA%B0%92</guid>
            <pubDate>Thu, 06 Jul 2023 12:10:27 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;

namespace baekjoontest
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] a = new int[9];
            int max = int.MinValue;
            int cnt = 0;

            for (int i = 0; i&lt;9; i++)
            {
                int n = int.Parse(Console.ReadLine());
                a[i] = n;
            }

            for(int i = 0; i &lt; 9; i++)
            {
                int arg = a[i];
                if (arg &gt; max) max = arg;
            }

            for(int i = 0; i &lt; 9; i++)
            {
                if(a[i] == max)
                {
                    cnt = i+1;
                }
            }

            Console.WriteLine(max);
            Console.WriteLine(cnt);
        }
    }
}
</code></pre>
<p>조금 더 코드 줄을 줄일 수 있지 않을까??</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# : 10818번 (최소, 최대)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10818%EB%B2%88-%EC%B5%9C%EC%86%8C-%EC%B5%9C%EB%8C%80</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10818%EB%B2%88-%EC%B5%9C%EC%86%8C-%EC%B5%9C%EB%8C%80</guid>
            <pubDate>Thu, 06 Jul 2023 12:01:57 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;

namespace baekjoontest
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());

            string[] arr = new string[n];
            arr = Console.ReadLine().Split();

            int min = int.MaxValue;
            int max = int.MinValue;

            for (int i = 0; i &lt; n; i++)
            {
            /*
            그냥 냅다 int.Parse(arr[i])와 비교하니까 자꾸 틀렸다고 하던데,
            int형 변수 arg 만들어서 값을 넣고 비교하니까 정답이다.
            정말.. 모르겠다.......... 알려주실분 구합니다.
            */
                int arg = int.Parse(arr[i]);
                if (arg &lt; min) min = arg;
                if (arg &gt; max) max = arg;
            }
            Console.WriteLine(min + &quot; &quot; + max);
        }
    }
}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# : 10951번 (A+B - 4 )]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10951%EB%B2%88-AB-4</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10951%EB%B2%88-AB-4</guid>
            <pubDate>Tue, 04 Jul 2023 12:15:52 GMT</pubDate>
            <description><![CDATA[<h1 id="📌success">📌Success</h1>
<pre><code class="language-cs">using System;

namespace baekjoontest
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                string input = Console.ReadLine();
                if (input == null)
                    break;
                string[] ab = input.Split();
                int a = int.Parse(ab[0]);
                int b = int.Parse(ab[1]);
                Console.WriteLine(a+b);
            }
        }
    }
}
</code></pre>
<h1 id="eofend-of-file">EOF(End of File)</h1>
<h3 id="최대-몇개의-입력이-들어오는지-모르는-문제에서-사용된다">최대 몇개의 입력이 들어오는지 모르는 문제에서 사용된다.</h3>
<h1 id="📌fail">📌Fail</h1>
<pre><code class="language-cs">using System;


namespace baekjoontest
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                string []input = Console.ReadLine().Split();
                if (input[0] == null || input[1] == null)
                    break;
                Console.WriteLine(int.Parse(input[0])+int.Parse(input[1]));

            }
        }
    }
}
</code></pre>
<blockquote>
<p>System.IndexOutOfRangeException: 인덱스가 배열 범위를 벗어났습니다.</p>
</blockquote>
<p>이 방법이 될 줄 알았는데 인덱스 범위를 벗어난 오류가 발생한다.
5 3
8
이런 출력이 나오고
input[0]값에 null값을 주면 13도 출력된 후 예외발생한다.</p>
<p>이유는 다음에 찾아봐야겠다.. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# : 10952번 (A+B - 5)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10952%EB%B2%88-AB-5</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-C-10952%EB%B2%88-AB-5</guid>
            <pubDate>Tue, 04 Jul 2023 11:56:57 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;


namespace baekjoontest
{
    class Program
    {
        static void Main(string[] args)
        { 
            while (true)
            {
                string[] a = Console.ReadLine().Split();
                if (int.Parse(a[0]) == 0 &amp;&amp; int.Parse(a[1]) == 0)
                    break;
                Console.WriteLine(int.Parse(a[0]) + int.Parse(a[1]));
            }
        }
    }
}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# : 2438번(별 찍기-1)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-2438%EB%B2%88%EB%B3%84-%EC%B0%8D%EA%B8%B0-1-C</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-2438%EB%B2%88%EB%B3%84-%EC%B0%8D%EA%B8%B0-1-C</guid>
            <pubDate>Mon, 03 Jul 2023 12:35:27 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;


namespace baekjoontest
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = int.Parse(Console.ReadLine());

            for(int i = 0; i &lt; a; i++)
            {
                for(int j = 0; j&lt;=i; j++)
                {
                    Console.Write(&quot;*&quot;);
                }
                Console.WriteLine();
            }
        }
    }
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[백준] C# : 2439번 (별 찍기-2)]]></title>
            <link>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-2439%EB%B2%88-%EB%B3%84-%EC%B0%8D%EA%B8%B0-2</link>
            <guid>https://velog.io/@jag_00/%EB%B0%B1%EC%A4%80-2439%EB%B2%88-%EB%B3%84-%EC%B0%8D%EA%B8%B0-2</guid>
            <pubDate>Mon, 03 Jul 2023 12:34:15 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-cs">using System;


namespace baekjoontest
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());

            for(int i = 0; i &lt; n; i++)
            {
                for(int k = n-1; k &gt; i; k--)
                {
                    Console.Write(&quot; &quot;);
                }
                for(int j = 0; j&lt;=i; j++)
                {
                    Console.Write(&quot;*&quot;);
                }
                Console.WriteLine();
            }
        }
    }
}
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[C#]정적(Static)vs인스턴스(Non-Static, Instance)]]></title>
            <link>https://velog.io/@jag_00/CStatic-vs-Non-Static-Instance</link>
            <guid>https://velog.io/@jag_00/CStatic-vs-Non-Static-Instance</guid>
            <pubDate>Sat, 22 Apr 2023 07:41:04 GMT</pubDate>
            <description><![CDATA[<h2 id="📌-정적static-vs-인스턴스non-staticinstance">📌 정적(Static) vs 인스턴스(Non-Static,Instance)</h2>
<h3 id="✍🏻-인스턴스-초기화-순서">✍🏻 인스턴스 초기화 순서</h3>
<blockquote>
<p>🎈 <strong>정적 필드 초기화 &gt; 정적 생성자 &gt; 인스턴스 필드 초기화 &gt; 인스턴스 생성자</strong> </p>
</blockquote>
<ol>
<li>정적 변수의 메모리를 0으로 초기화</li>
<li>정적 변수 초기화</li>
<li>베이스 클래스의 정적 생성자 호출</li>
<li>정적 생성자 호출</li>
<li>인스턴스 변수의 메모리를 0으로 초기화</li>
<li>인스턴스 변수 초기화</li>
<li>베이스 클래스의 인스턴스 생성자 호출</li>
<li>인스턴스 생성자 호출<blockquote>
</blockquote>
</li>
</ol>
<p><strong>동일한 타입으로 추가 인스턴스가 발생시 5단계부터 수행된다</strong></p>
<hr>
<h3 id="✍🏻-정적변수-vs-인스턴스-변수">✍🏻 정적변수 vs 인스턴스 변수</h3>
<h4 id="🔧-정적변수-예제">🔧 정적변수 예제</h4>
<pre><code class="language-cs">class StaticVSInstance
    {
        static void Main(string[] args)
        {
            int mainOne = Static.one;
            Console.WriteLine(mainOne);
        }
    }
    public class Static
    {
        public static int one = 1;
    }</code></pre>
<blockquote>
<p><strong>바로 클래스를 호출하여 사용할 수 있음</strong></p>
</blockquote>
<hr>
<h4 id="🔧-인스턴스-변수-예제">🔧 인스턴스 변수 예제</h4>
<pre><code class="language-cs">class StaticVSInstance
    {
        static void Main(string[] args)
        {
            Instance instance = new Instance();
            int mainTwo = instance.two;
            Console.WriteLine(instance.two);
        }
    }
public class Instance
    {
        public int two = 2;
    }    </code></pre>
<blockquote>
<p><strong>new 키워드를 통한 개체(Object)를 생성해야 사용할 수 있음</strong></p>
</blockquote>
<hr>
<h3 id="✍🏻-정적메소드-vs-인스턴스-메소드">✍🏻 정적메소드 vs 인스턴스 메소드</h3>
<h4 id="🔧-예제">🔧 예제</h4>
<pre><code class="language-cs">class StaticVSInstance
    {
        static void Main(string[] args)
        {
            Static.A();

            Instance instance = new Instance();
            instance.B();
        }
    }
    public class Static
    {
        public static void A()
        {
            Console.WriteLine(&quot;[1] 정적 메서드&quot;);
        }

    }
    public class Instance
    {
        public void B()
        {
            Console.WriteLine(&quot;[2] 인스턴스 메서드&quot;);
        }
    }</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/be2e2953-6800-4fc8-b97e-fe392614feee/image.png" alt=""></p>
<hr>
<h2 id="🔥-결론">🔥 결론</h2>
<blockquote>
<ul>
<li><strong>멤버초기화는 호출순서가 우선되니 값을 바로 사용할 수 있지만 예외를 처리하지 못함.
예외 가능성이 있다면 생성자에서 초기화!</strong></li>
</ul>
</blockquote>
<ul>
<li><strong>Static을 사용하면 하나의 복사본이 생성됨(너무 과다하게 사용하면 [OOP]에 맞지 않음.)</strong><ul>
<li><strong>Instance화 하면 필드가 속한 클래스 변수의 복사본이 생성됨.</strong></li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[C#]overloading과 overriding]]></title>
            <link>https://velog.io/@jag_00/C-overloading-vs-overriding</link>
            <guid>https://velog.io/@jag_00/C-overloading-vs-overriding</guid>
            <pubDate>Sat, 22 Apr 2023 06:35:20 GMT</pubDate>
            <description><![CDATA[<h2 id="📌오버로딩overloading과-오버라이딩overriding">📌오버로딩(Overloading)과 오버라이딩(Overriding)</h2>
<p>처음 프로그래밍할 때 쉽게 혼동하는 단어가 바로 오버로드(Overload)와 오버라이드(Override) 입니다.</p>
<h3 id="✍🏻-오버로딩overloading">✍🏻 오버로딩(Overloading)</h3>
<ul>
<li><strong>오버로딩(Overloading)</strong> : 매겨변수를 달리하여 같은 이름의 함수를 여러 개를 정의할 수 있습니다. &quot;다중 정의&quot;라고도 합니다.</li>
</ul>
<blockquote>
<p><strong>메서드 시그니처(Signature)</strong> : 메서드 이름 + 매개변수 정보(개수 및 타입 정보)</p>
</blockquote>
<ul>
<li>메서드 이름은 같아야 함.</li>
<li>매개변수 정보(개수 및 타입 정보)는 달라야 함.</li>
</ul>
<h4 id="🔧-오버로딩overloading-예제">🔧 오버로딩(Overloading) 예제</h4>
<pre><code class="language-cs">class Test
    {
        static void Main(string[] args)
        {
            var over = new OverLoadingTest();
            over.test();
            over.test(1, 3);
            over.test(3.3f);

        }
    }

public class OverLoadingTest
    {
        public void test()
        {
            Console.WriteLine(&quot;매개변수 없음&quot;);
        }
        public void test(int a , int b)
        {
            Console.WriteLine($&quot;매개변수 : {a} , {b}&quot;);
        }

        public void test(double d)
        {
            Console.WriteLine($&quot;double형 매개변수 : {d}&quot;);
        }
    }</code></pre>
<p> <img src="https://velog.velcdn.com/images/jag_00/post/7d30ca4d-241a-4a4b-a87f-21ed9031e114/image.png" alt=""></p>
<h3 id="✍🏻-오버라이딩overriding">✍🏻 오버라이딩(Overriding)</h3>
<ul>
<li><strong>오버라이딩(Overriding)</strong> : 부모 클래스에서 이미 만든 메소드를 동일한 이름으로 자식 클래스에서 다시 정의(&quot;재정의&quot;)하여 사용합니다.
부모 클래스의 메소드는 <strong>virtual</strong> 키워드로 한정되어 있어야 하고 오버라이딩 하는 자식 클래스의 메소드는 <strong>override</strong> 키워드로 한정해줘야 합니다.</li>
</ul>
<blockquote>
<h3 id="🎈-virtual-vs-astract">🎈 virtual VS <strong>astract</strong></h3>
</blockquote>
<h3 id="virtual">virtual</h3>
<ul>
<li>virtual 키워드는** 정적 클래스를 제외**한 모든 클래스에서 사용 가능.<ul>
<li>virtual 키워드로 정의한 속성이나 메서드는 <strong>본문을 정의할 수 있음.</strong></li>
<li>접근 한정자는 <strong>public, interanl, protected</strong> (<strong>private 사용 불가</strong>)</li>
<li>자식 클래스에서 함수 재정의가 <strong>선택</strong>적으로 이루어짐<h3 id="abstract">abstract</h3>
</li>
<li>abstract 키워드는 <strong>선언하는 클래스도 반드시 abstract 클래스</strong>여야 함.</li>
</ul>
</li>
<li>abstract 키워드로 정의한 속성이나 메서드는 <strong>본문을 정의할 수 없음.</strong></li>
<li>접근 한정자는 <strong>public, interanl, protected</strong> (<strong>private 사용 불가</strong>)</li>
<li>자식 클래스에서 함수 재정의가 <strong>필수</strong>로 이루어짐</li>
</ul>
<h4 id="🔧-오버라이딩overriding-예제">🔧 오버라이딩(Overriding) 예제</h4>
<h5 id="01-virtual--override">#01. virtual + override</h5>
<pre><code class="language-cs">  class Test
    {
        static void Main(string[] args)
        {
            Gun gWeapon = new Gun();
            gWeapon.name = &quot;ShotGun&quot;;
            gWeapon.damage = 23;
            gWeapon.type = &quot;샷건&quot;;

            gWeapon.Print();


            Weapon wWeapon = new Gun();
            wWeapon.name = &quot;DEagle&quot;;
            wWeapon.damage = 7;
            //wWeapon.type = &quot;권총&quot;; 부모의 클래스 멤버만 접근 가능
            wWeapon.Print();

        }
    }


public class Weapon
    {
        public String name;
        public int damage;

        public virtual void Print()
        {
            Console.WriteLine($&quot;이 무기의 이름은 {name} , 데미지는 {damage} 입니다.&quot;);
        }
    }

    public class Gun : Weapon 
    {
        public String type;

        public override void Print()
        {
            Console.WriteLine($&quot;이 무기의 이름은 {name} , 데미지는 {damage} 입니다.&quot;);
            Console.WriteLine($&quot;이 무기는 {type} 입니다.&quot;);
        }
    }</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/c2556a05-9ad9-4ac8-9d8e-2aab77679cba/image.png" alt=""></p>
<p><del>부모 개체에 자식 인스턴스를 담은 wWeapon은 자식 클래스에 있는 변수 type값을 참조하려고 하면 찾을 수 없다는 오류가 납니다.</del></p>
<h5 id="02-void--new-void">#02. void + new void</h5>
<pre><code class="language-cs">

  class Test
    {
        static void Main(string[] args)
        {
            Gun gWeapon = new Gun();
            gWeapon.name = &quot;ShotGun&quot;;
            gWeapon.damage = 23;
            gWeapon.type = &quot;샷건&quot;;

            gWeapon.Guess();


            Weapon wWeapon = new Gun();
            wWeapon.name = &quot;DEagle&quot;;
            wWeapon.damage = 7;
            //wWeapon.type = &quot;권총&quot;; 부모의 클래스 멤버만 접근 가능
            wWeapon.Guess();

        }
    }
public class Weapon
    {
        public String name;
        public int damage;

        public void Guess()
        {
            Console.WriteLine($&quot;이 무기의 이름은 {name} , 데미지는 {damage} 일걸??&quot;);
        }
    }

    public class Gun : Weapon 
    {
        public String type;

        public new void Guess()
        {
            Console.WriteLine($&quot;이 무기의 이름은 {name} , 데미지는 {damage} 일걸??&quot;);
            Console.WriteLine($&quot;이 무기는 {type} 일걸??&quot;);
        }
    }</code></pre>
<p>  <img src="https://velog.velcdn.com/images/jag_00/post/85023acf-1a23-4d16-8178-42f5b599dba3/image.png" alt=""></p>
<p><del>Guess 메서드 속 자식 클래스 변수인 type이 들어간 Console.WriteLine(); 자체가 안나오는데, 오류인지 부모 개체에 자식 인스턴스를 담은 wWeapon의 특징인지 자세히 모르겠습니다.</del></p>
<blockquote>
<p>new 는 다형성과는 아무런 연관이 없습니다.
단순히 자식 클래스에서 새로이 정의한다는 것입니다</p>
</blockquote>
<ul>
<li>오버라이딩을 했을 경우 : 자식 클래스(Child)의 오버라이드 된 메서드가 실행됩니다.</li>
<li>new 로 재정의 할 경우 : 부모 클래스(Parent)의 원 메서드가 실행됩니다</li>
</ul>
<h2 id="🔥-결론">🔥 결론</h2>
<ul>
<li><strong>오버로딩(Overloading)</strong> : 메서드 시그니처 중 매서드 이름은 같고, 매개변수의 정보(개수 및 타입 정보)를 다르게 정의한 방법<ul>
<li><strong>오버라이딩(Overriding)</strong> : 부모 클래스에서 자식 클래스로 상속할 때, 부모 클래스의 메서드를 추가/삭제/수정으로 재정의 하는 방법</li>
</ul>
</li>
</ul>
<p>오버라이딩 같은 경우는 상황을 잘 생각하고 올바른 방법을 사용하는것이 좋겠습니다.
제가 배우는 책에서는 <strong>virtual + override 방법이 가장 좋은 방법</strong>이라고 합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[C#]while vs do-while]]></title>
            <link>https://velog.io/@jag_00/Cwhile-vs-do-while</link>
            <guid>https://velog.io/@jag_00/Cwhile-vs-do-while</guid>
            <pubDate>Wed, 05 Apr 2023 08:07:53 GMT</pubDate>
            <description><![CDATA[<h2 id="📌while문과-do-while문">📌while문과 do-while문</h2>
<p>반복문은 어떤 작업(코드)들이 반복적으로 실행되도록 할 때 사용됩니다.
반복문에는 for문, foreach문, while문 do-while문이 있습니다.
<strong><em>(반복문들 가운데 while문과 do-while문을 다루겠습니다.)</em></strong></p>
<hr>
<h3 id="✍🏻-while문과-do-while문-예제">✍🏻 while문과 do-while문 예제</h3>
<h4 id="🔧-while문">🔧 while문</h4>
<pre><code class="language-cs">int a = 1;
while(a&lt;5)
{
    Console.WriteLine($&quot;{a}번 째 반복중..&quot;);
    a++;
}</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/0aaca20e-7b3c-4e7a-8b6e-998c59debd01/image.png" alt=""></p>
<blockquote>
<p><strong>조건문이 true인 상태</strong>일 때 <strong>while문에 속한 문장(코드)를 반복</strong>합니다.</p>
</blockquote>
<h4 id="🔧-do-while문">🔧 do-while문</h4>
<pre><code class="language-cs">int a = 1;
do
{
    Console.WriteLine($&quot;{a}번 째 반복중..&quot;);
    a++;
}
while (a &lt; 5);</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/296440c4-0593-489b-aafa-7647fbf778e5/image.png" alt=""></p>
<blockquote>
<p><strong>실행을 한 뒤에 while의 조건을 확인</strong>합니다. </p>
</blockquote>
<pre><code class="language-cs">int a = 1;
do
{
    Console.WriteLine($&quot;{a}번 째 반복중..&quot;);
    a++;
}
while (a &lt; 1);</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/bcd061e8-f73e-464e-8418-51ca1b8f8501/image.png" alt=""></p>
<blockquote>
<p><strong>조건문이 false임에도, do문은 먼저 실행됩니다.</strong></p>
</blockquote>
<hr>
<h2 id="📌-while문과-do-while문은-언제-사용되는-건가">📌 while문과 do-while문은 언제 사용되는 건가?</h2>
<p>while문은 조건문이 true일 때 반복하고 싶다면 꾸준히 사용해 왔던 문법입니다.
하지만 인터넷을 아무리 뒤져봐도 do-while문은 잘 사용하지 않고, 꼭 한 번은 실행 되어야 하는 코드가 있다면 do-while을 사용해야 한다고 말합니다. </p>
<h2 id="🔥-결론">🔥 결론</h2>
<ul>
<li><strong>조건을 만족할 시 반복하고 싶다면 while문</strong></li>
<li><strong>꼭 한 번은 실행하고 조건을 봐야 한다면 do-while문</strong></li>
</ul>
<p>* (아직은 꼭 한 번은 실행하여야 하는 코드를 짜본적이 없어, 짜게 된다면 수정하겠습니다.)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[C#]Convert.ToInt32() vs int.Parse()]]></title>
            <link>https://velog.io/@jag_00/C-Convert.ToInt32-vs-int.Parse</link>
            <guid>https://velog.io/@jag_00/C-Convert.ToInt32-vs-int.Parse</guid>
            <pubDate>Thu, 30 Mar 2023 09:57:10 GMT</pubDate>
            <description><![CDATA[<h2 id="📌converttoint32함수와-intparse함수">📌Convert.ToInt32()함수와 int.Parse()함수</h2>
<p>C#에서 특정 값을 정수형으로 변환하기 위해 Convert.ToInt32()함수 또는 int.Parse()함수를 사용합니다.</p>
<hr>
<h3 id="✍🏻string형-변수">✍🏻string형 변수</h3>
<h4 id="🔧converttoint32">🔧Convert.ToInt32()</h4>
<pre><code class="language-cs"> string convertStr = &quot;24&quot;;
 int b = Convert.ToInt32(convertStr);
 Console.WriteLine(b);
 Console.WriteLine(b.GetType());</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/b21c87be-8581-438e-9c79-606fd676bd61/image.png" alt=""></p>
<h4 id="🔧intparse">🔧int.Parse()</h4>
<pre><code class="language-cs">string parseStr = &quot;24&quot;;
int a = int.Parse(parseStr);
Console.WriteLine(a);
Console.WriteLine(a.GetType());</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/b21c87be-8581-438e-9c79-606fd676bd61/image.png" alt=""></p>
<blockquote>
<p>특정 값이 있는 string형 변수를 사용할 때, Type이 int형으로 잘 변환된 것을 확인할 수 있습니다.</p>
</blockquote>
<hr>
<h2 id="📌converttoint32함수와-intparse함수의-차이점">📌Convert.ToInt32()함수와 int.Parse()함수의 차이점</h2>
<p>두 함수는 null값을 처리하는 방식이 다르고, char형 변수의 사용 가능 여부가 다릅니다.</p>
<hr>
<h3 id="✍🏻char형-변수">✍🏻char형 변수</h3>
<h4 id="🔧converttoint32-1">🔧Convert.ToInt32()</h4>
<pre><code class="language-cs">char convertChr = &#39;8&#39;;
int b = Convert.ToInt32(convertChr);
Console.WriteLine(b);
Console.WriteLine(b.GetType());</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/2c915a11-6ba5-4fe8-8d57-748e194753ba/image.png" alt=""></p>
<blockquote>
<p>char형의 값인 8이 ASCII코드로 변경되어 반환됩니다.</p>
</blockquote>
<h4 id="🔧intparse-1">🔧int.Parse()</h4>
<pre><code class="language-cs">char parseChr = &#39;8&#39;;
int a = int.Parse(parseChr);</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/40cb1354-0077-4b43-9f44-37e74895a04f/image.png" alt=""></p>
<blockquote>
<p>int.Parse()함수는 char형을 string형으로 변환할 수 없습니다.</p>
</blockquote>
<hr>
<h3 id="✍🏻null값이-할당된-string형-변수">✍🏻null값이 할당된 string형 변수</h3>
<h4 id="🔧converttoint32-2">🔧Convert.ToInt32()</h4>
<pre><code class="language-cs">string convertNullStr = null;
int b = Convert.ToInt32(convertNullStr);
Console.WriteLine(b);
Console.WriteLine(b.GetType());</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/cce8e4da-55af-48b9-bc3b-410facb0bd40/image.png" alt=""></p>
<blockquote>
<p><strong>Convert.ToInt32()</strong>함수는 <strong>null의 값을 0으로 반환</strong>시킵니다.</p>
</blockquote>
<h4 id="🔧intparse-2">🔧int.Parse()</h4>
<pre><code class="language-cs">string parseNullStr = null;
int c = int.Parse(parseNullStr);
Console.WriteLine(c);
Console.WriteLine(c.GetType());</code></pre>
<blockquote>
<p><strong>int.Parse()</strong>로 null인 값을 변환하면, <strong>System.ArgumentNullException</strong> 예외가 발생합니다.</p>
</blockquote>
<h2 id="🔥결론">🔥결론</h2>
<ul>
<li><h3 id="intparse함수는"><strong>int.parse()</strong>함수는</h3>
String형만 가능 char형은 불가능
변환하려는 변수가 정수임이 확실할 때 사용
null값을 변환하면 ArgumentNullException 예외 발생</li>
<li><h3 id="converttoint32함수는"><strong>Convert.ToInt32()</strong>함수는</h3>
String, char형 둘다 가능
null값을 변환하면 0값을 반환</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[C#]Convert.ToString() vs ToString()]]></title>
            <link>https://velog.io/@jag_00/CConvert.ToString-vs-ToString</link>
            <guid>https://velog.io/@jag_00/CConvert.ToString-vs-ToString</guid>
            <pubDate>Thu, 30 Mar 2023 08:40:38 GMT</pubDate>
            <description><![CDATA[<h2 id="📌converttostring함수와-tostring함수">📌Convert.ToString()함수와 ToString()함수</h2>
<p>C#에서 특정 값을 문자열로 변환하기 위해 <strong>Convert.ToString()</strong>함수 또는 <strong>ToString()</strong>함수를 사용합니다.</p>
<hr>
<h3 id="✍🏻특정-값이-할당된-int형-변수-사용">✍🏻특정 값이 할당된 int형 변수 사용</h3>
<pre><code class="language-cs">int notNull = 24;

Console.WriteLine(&quot;Convert.ToString(notNull) : &quot; + Convert.ToString(notNull));
            //Convert.ToString()
Console.WriteLine(&quot;notNull.ToString() : &quot; + notNull.ToString());
            //ToString()</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/1851710f-06cd-4850-9fac-f1aec36bed75/image.png" alt=""></p>
<hr>
<h3 id="✍🏻null값이-할당된-int형-변수-사용">✍🏻null값이 할당된 int형 변수 사용</h3>
<pre><code class="language-cs">int? numNull= null;

Console.WriteLine(&quot;Convert.ToString(numNull) : &quot; + Convert.ToString(numNull));
            //Convert.ToString()

Console.WriteLine(&quot;numNull.ToString() : &quot; + numNull.ToString());
            //ToString()</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/5efddd25-cace-4e18-bf08-d70e458c2375/image.png" alt=""></p>
<hr>
<h3 id="✍🏻특정-값이-할당된-string형-변수-사용">✍🏻특정 값이 할당된 string형 변수 사용</h3>
<pre><code class="language-cs">string stringNotNull = &quot;JAG&quot;;

Console.WriteLine(&quot;Convert.ToString(stringNotNull) : &quot; + Convert.ToString(stringNotNull));
            //Convert.ToString()

Console.WriteLine(&quot;stringNotNull.ToString() : &quot; + stringNotNull.ToString());
            //ToString()</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/117a808e-8193-4057-99ea-7fc340bc8eec/image.png" alt=""></p>
<blockquote>
<ul>
<li><strong>int형 -&gt; string형</strong>으로 변환 하였을 때, null인 값과 null이 아닌 값의 결과는 같습니다.</li>
</ul>
</blockquote>
<ul>
<li><strong>string형 -&gt; string형</strong>으로 변환 하였을 때, 특정 값이 할당된 변수의 경우 실행 결과 빈 값으로 반환됩니다.</li>
</ul>
<hr>
<h2 id="📌converttostring함수와-tostring함수의-차이점">📌Convert.ToString()함수와 ToString()함수의 차이점</h2>
<p>두 함수는 null값을 처리하는 방식이 다릅니다.</p>
<hr>
<h3 id="✍🏻null값이-할당된-string형-변수-사용">✍🏻null값이 할당된 string형 변수 사용</h3>
<pre><code class="language-cs">string stringNull = null;

Console.WriteLine(&quot;    Convert.ToString(stringNull) : &quot; + Convert.ToString(stringNull));
            //Convert.ToString()

Console.WriteLine(&quot;    stringNull.ToString() : &quot; + stringNull.ToString());
            //ToString()</code></pre>
<p><img src="https://velog.velcdn.com/images/jag_00/post/f665993b-da20-40c0-b9f2-b61f988601f3/image.png" alt=""></p>
<blockquote>
<ul>
<li><strong>Convert.ToString()</strong>은 <strong>null값을 빈 값으로 반환</strong>하는 반면, <strong>ToString()</strong>은 null값에 대해 <strong>System.NullReferenceException</strong> 예외가 발생합니다.</li>
</ul>
</blockquote>
<h2 id="🔥-결론">🔥 결론</h2>
<ul>
<li><strong>int형</strong> 변수는 <strong>null값 여부에 상관없이</strong> 두 함수 모두 빈 값을 반환합니다.</li>
<li><strong>string형</strong> <strong>변수는 null값이 아닌 변수</strong>는 두 함수 모두 빈 값을,</li>
<li><em>null값인 변수*</em>는 Convert.ToString()함수는 빈 값을 반환, 
ToString()함수는 NullReferenceException 예외를 발생시킵니다.</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>