Now Loading ...
-
창의 수리 - LG Way Fit
창의 수리
어느덧 마지막 파트이다.
창의 수리 파트는 2가지 유형으로 출제된다.
수/문자 추리와 응용 계산이다.
수/문자 추리는 간단하게 숫자의 규칙을 찾는 문제이고,
응용 계산은 농도, 거속시 등 기본적인 방정식을 이용한 계산들이다.
등차수열, 등비수열, 계차수열, 피보나치 수열 등 기본 수열들을 익히고
농도, 거속시 기본 문제들을 익히면 쉽게 풀어낼 수 있다.
수/문자 추리
나열된 숫자 또는 도형에 포함된 규칙을 찾아 답을 도출하는 문제이다.
각종 수열에 대해 알아야 하고, IQ 테스트 같은 규칙 유형을 익히는게 핵심이다.
등차 수열 : 연속하는 두 항의 차가 같다.
등비 수열 : 각 항이 이전 항과 동일한 비를 가진다.
계차 수열 : 인접한 항의 차가 수열로 이루어져 있다.
피보나치 수열 : 모든 항은 바로 앞 두 항의 합이다.
각각의 수열에 대한 자세한 식은 몰라도, 어떠한 규칙이 있는지 알아야 한다.
(식을 알면 더 좋지만 대충 문제보면 느낌이 온다.)
응용 계산
제시된 조건을 바탕으로 식을 세우고 답을 도출하는 문제이다.
농도, 거속시, 일의 양, 원가/정가, 경우의 수, 확률 등 여러 문제가 나온다.
각 문제별 정확한 식을 알고 계산하는 것이 핵심이다.
미지수를 여러개 설정하는 것보다는 미지수를 최소한으로 하는 것이 계산에 쉽다.
농도 문제
소금의 양 = (소금물의 농도 / 100) * 소금물의 양 이 식을 바탕으로 여러 식이 도출된다.
소금물 활용 문제는 거의 무조건 소금의 양에 관한 식을 기준으로 방정식을 세워 풀면 된다.
구하고자 하는 것을 x로 두고, 소금의 양 공식에 때려 박자.
++) 추가 팁
강의를 들으니 크로스 방법을 설명해 주었다. 가중 평균을 이용한 방법이다.
물을 증발시키든 더하든, 용액을 더하든, 설탕을 더하든 모든 방법에 다 적용이 가능하다.
비율을 통한 계산 방법이다.
예를들어 30% 소금물에 50g을 증발시켰더니 35%가 되었다. 이때 소금을 더 넣어 40% 만들었을 때 몇g의 설탕을 넣어야 할까?
한눈에 봐도 복잡해 보인다. 하지만 비율을 생각하면 쉽게 해결할 수 있다.
물의 소금 비율은 0%이다.
30%와 35%의 농도 차이는 5%이다. => 1
0%와 35%의 농도 차이는 35%이다. => 7
둘을 크로스하면 30%의 소금물의 비율은 7, 물의 비율은 1이 된다.
증발한 물이 50g이라고 했으니, 원래 소금물은 350g이 된다.
소금의 비율은 100%이다.
35%와 40%의 농도 차이는 5%이다. -> 1
100%와 40%의 농도 차이는 60%이다. -> 12
이 둘을 크로스하면 35%의 소금물의 비율은 12이고, 소금의 비율은 1이 된다.
35%의 소금물은 (350-50)만큼 있으니 1:12=x:300이 된다.
따라서 소금의 양은 25g이 된다.
거속시
거리 = 속력 * 시간
응용 : 다른 속력으로 일정 거리 왕복했을 때 평균 속력
1/속력1 + 1/속력2 = 2/평균속력
여러 추가 응용 문제들이 있지만, 거속시 공식을 이리저리 활용하면 쉽게 풀 수 있다.
(비례, 반비례를 생각하면 더 쉽게 풀 수 있다.)
추가로 보기를 잘 활용해야한다.
예를들어 갈때 30km/h, 올때 10km/h 총 2시간 걸렸을 때 이동 거리는?
1.12km 2.15km 3.18km 4.21km 5.24km
이런 문제의 경우 식을 세워 풀면 오래 걸리므로, 대충 감 오는걸로 넣어서 풀면 된다.
15/30+10/15=2
일의 양
A 혼자 했을 때 걸린 시간, A+B 걸린 시간 주어졌을 때 B 혼자 했을 때 시간은?
이런 문제가 자주 등장한다.
간단하게 A와 A+B의 최소공배수를 구하자.(그 값을 gcd라 하겠다)
gcd/A + gcd/B = gcd/(A+B)가 된다.
예를들어 A 15일, A+B 10일이라 했을 때 최소공배수는 30이 된다.
30/15 + 30/B = 30/10 => B는 30이 나온다.
일의 양
문제 설명 그대로 식을 적은 후 계산하자.
원가를 x로 두고 풀자.
경우의 수 / 확률
줄세우기(n개 나열) : n!
순열(서로다른 n개 중 r개 나열, 순서O) : n!/(n-r)!
조합(서로다른 n개 중 r개 뽑기, 순서X) : n!/(n!(n-r)!)
같은 것이 있는 줄세우기 : 전체 줄세우고 같은 개수!만큼 나누기 n!/(a!b!…)
원순열 : (n-1)!
최단거리 경우의 수 : (가로+세로)!/(가로!세로!)
중복 순열 : n^r
중복 조합 : nCr 조합에서 n->n+r-1
조건부 확률 : P(A|B) = P(A교B)/P(B)
위의 식 이외에도 여러 응용 문제가 나올 수 있다.
잘 기억해두자.
위의 소개된 문제들 외에도 많은 문제들이 출제된다.
허나 모든 문제를 다 외울 수 없다.
각 문제를 읽고 무엇을 물으며, 어떤 식을 세워야 할지 유도리 있게 잘 정하자.
마무리
지금까지 LG Way Fit Test에 대한 기본적인 유형을 알아보았다.
알아본 유형 이외에도 수 많은 종류의 문제들이 출제될 수 있다.
최대한 아는건 빨리 풀고, 모르는건 찍고 넘어가는게 핵심이다.
각 파트 별 10분씩 주어진 15문제를 모두 푸는건 솔직히 무리다.
아무리 빨리 풀어도 못푸는 문제가 발생할 수도 있다.
과감한 포기도 필수적이며, 긴장하지 않고 차근히 읽는 것이 중요하다.
Way Fit Test까지 5일 남았다. 남은 기간동안 기출유형문제들을 많이 풀어봐야겠다.
꼭 합격했으면 좋겠다…(제발ㅠㅜㅠㅜ)
이 글을 읽은 모든 취준생분들! 인적성검사 잘 보세요~!~!!
-
자료 해석 - LG Way Fit
자료 해석
자료 해석 파트는 크게 4가지 유형이 출제된다.
자료 이해, 자료 계산, 자료 추론, 자료 변환이다.
간단하게 표를 살펴보고 대충 암산해도 쉽게 풀 수 있는 문제들이다.
온라인 메모장과 계산기도 제공되기 때문에 더더욱 쉽게 풀 수 있다.
자료 이해
제시된 자료에 대한 옳고 그름을 판단하는 문제이다.
자료에 대한 설명으로 옳은 것, 틀린 것 등을 물어본다.
가장 많은 비중을 차지한다.
보기 중 계산이 필요 없는 문제들 먼저 소거하고,
계산이 간단한 순으로 확인하면 빠르게 해결할 수 있다.
자료 계산
제시된 자료의 수치를 바탕으로 특정 값을 계산하는 문제이다.
변화량, 증감율, 비중, 평균 등 간단한 공식을 숙지하면 쉽게 해결할 수 있다.
(공식이라고 하기에도 간단한 내용이다.)
문제의 핵심을 잘 파악하고, 필요한 계산만 진행하자.
자료 추론
제시된 자료를 이용하여 항목이나 수치를 찾는 문제이다.
거의 출제되지는 않는다.
자료 이해, 자료 계산과 동일하게 풀면 된다.
자료 변환
제시된 자료를 다른 형태의 자료료 변환하는 문제이다.
1문항정도 출제된다.
주어진 표를 바탕으로 꺾은선, 막대, 원그래프 등으로 나타내는 문제이다.
이 또한 계산이 쉬운 보기부터 풀자.
마무리
음…자료 해석 파트는 딱히 추가로 알아야 할 것이나 기술이 필요 없다.
그냥 빠르게 읽고, 빠르게 계산하여 찾으면 된다.
계산기 활용이 매우 중요해보인다.
계산 없는 쉬운 보기부터 파악하면 속도를 높일 수 있지만
짧은 시험시간 내 보기 전체를 파악하기에는 무리가 있다.
그냥 5번 보기부터 푸는게 가장 빠른 것 같다.
(도표 문제는 5번 정답이 은근 많은 것 같다. 그냥 내 느낌이다.)
-
언어 추리 - LG Way Fit
언어 추리
언어 추리 파트는 크게 2가지 유형이 출제된다.
명제 추리와 조건 추리이다.
전반적으로 삼단논법 문제가 나오며, 간단한 도식 정도 세울 수 있으면 쉽게 풀 수 있다.
Way Fit test에서는 따로 종이는 쓸 수 없고, 프로그램에서 제공하는 메모장만 사용할 수 있다.
언어 추리 파트는 명제의 기초 논리(역, 이, 대우, 삼단논법 등)를 정확히 이해하고,
메모장에 간단하게 도식화 하면 쉽고 빠르게 풀 수 있다.
명제 추리
제시된 명제를 바탕으로 올바른 결론을 도출하는 문제이다.
결론 도출을 위한 추가 명제를 찾는 문제도 출제된다.
역, 이, 대우, 삼단논법에 대해 정확히 이해하고 있어야 하고, 도식화 할 수 있어야 한다.
명제 p->q에 대한 기초 논리는 아래와 같다.
역 : q->p
이 : ~p->~q
대우 : ~q->~p
기본 명제와 대우는 진리치가 같다. 또한 역과 이는 진리치가 같다.
즉 명제가 참이면 대우도 참이고, 역이 참이면 이도 참이다.
반면 원 명제가 참이어도, 역과 이는 참이 아닐 수 있다.
간단히 생각하면 앞뒤 바꿔서 ~을 취하면 항상 참이다.
삼단논법 : 대전제 p->q, 소전제 q->r, 결론 p->r
명제 문제는 벤다이어그램을 그리면 쉽게 풀 수 있지만…
LG WayFit은 단순한 메모장만 주어진다ㅠㅜㅠㅜ
명제 문제를 풀 때 지문 속 내용을 O,X로 나타내어 간단하게 풀어보자.
예를 들어 아래와 같은 지문을 생각해 보자.
게임을 좋아하는 사람은 코딩을 좋아한다.
운동을 싫어하는 사람은 코딩도 싫어한다.
해당 문장을 OX로 표시하고, 기초 논리를 생각해보면 아래와 같다.
게임O->코딩O => 코딩X->게임X
운동X->코딩X => 코딩O->운동O
해당 논리에 삼단논법을 적용하면 게임O->운동O이라는 결과가 나온다.
(OX로 하려니 영어 바꾸기가 귀찮다..걍 ~을 쓰자!)
조건 추리
제시된 조건을 바탕으로 옳고 그름을 판단하는 문제이다.
줄 세우기, 조건을 고려 했을 때 참, 거짓인 것 등을 묻는다.
조건을 간단하게 단어나 표로 정리하면 쉽게 관계를 파악할 수 있다.
각 관계를 파악할 때 빠진 조건이 없는지 꼭 확인해보자.
조건 추리 문제는 간단한 IQ테스트 느낌이다.
(메이플스토리 수학도둑, 닌텐도 레이튼 시리즈를 많이 즐겼으면 쉽게 느껴질 것이다.)
메모장에 조건에 맞게 순서를 나타내거나, 간단한 표 형태로 나타내면 쉽게 해결할 수 있을 것이다.(직접 그릴 수 없으니 간단하게 띄어쓰기와 줄바꿈으로 구분하자.)
마무리
과고 출신에 나름 머리가 잘 돌아간다고 생각했지만
막상 10분이라는 짧은 시간 내에 손필기 없이 문제를 풀어보니 너무 어려웠다…
모의 테스트를 보니 시간 내에 다 풀지도 못했다.
그나마 다행인 것은 푼 문제의 정답률은 생각보다 높았다.
좀 더 두뇌 회전을 빠르게 하고, 메모장 활용을 잘 해야겠다.
한번 읽고 뇌정지 오는 문제는 과감히 버리자!
-
언어 이해 - LG Way Fit
잡담
갑작스런 LG 스마트융합특성학과트랙 서류 합격 소식에 인적성 공부를 하게 되었다.
하반기 취업 시장에 뛰어들기 전 8월달에 공부하려고 했는데 강제 공부 시작이 되었다.
지금부터 딱 일주일 후 19일 인적성 검사를 하게 되고, 20일에 코딩테스트를 봐야 한다.
일단 급한대로 인적성 부터 공부를 해야겠다.
LG Way Fit Test란?
LG에서는 인적성 검사를 Way Fit Test라 한다.
적성 검사는 언어 이해, 언어 추리, 자료 해석, 창의 수리 총 4가지 분야로 나누어진다.
각 분야별로 15문항의 문제가 출제되고, 각각 10분씩 총 40분의 풀이 시간이 주어진다.
인성 검사는 총 183문항으로 3문항씩 묶어 61문항군이 출제된다.
각 문항별로 전혀그렇지않다~매우 그렇다를 체크해야하며, 각 문항군별 가깝다, 멀다를 따로 체크해야 한다.
가깝다, 멀다는 3개씩 묶어진 문항 중 가장 자신과 가까운 문항과 먼 문항에 체크하면 된다.
LG Way Fit Test가 무엇인지 간단하게 알아보았으니
본격적으로 인적성 검사 준비를 시작해보자.
이번 포스트에서는 언어 이해 파트를 알아볼 것이다.
언어 이해
언어 이해 파트에서는 크게 4가지 유형이 출제된다.
중심 내용 파악, 세부 내용 파악, 글의 구조 파악, 비판 및 반박이다.
중심 내용 파악
필자의 의도를 파악하는 문제이다.
중심 내용을 묻거나, 제목을 묻는 문제, 이어질 내용을 묻는 문제로 출제된다.
글에서 절달하고자 하는 핵심 내용은 글의 앞부분 또는 뒷부분에서 제시될 확률이 높다.
따라서 글의 앞부분과 뒷부분을 읽고 글의 의도를 파악하는 것이 중요하다.
세부 내용 파악
언어 이해 파트에서 가장 많은 비중을 차지한다.
세부적인 내용의 옭고 그름을 추론하는 문제이다.
글의 내용과 일치하는 것, 일치하지 않은 것을 묻는 문제로 출제된다.
선택지를 먼저 읽고 핵심어를 추려낸 뒤, 글을 빠르게 훑어보는 것이 핵심이다.
추려냈던 핵심어를 중심으로 글과 보기를 비교해가면서 일치 여부를 파악해야 한다.
글의 구조 파악
글의 논리적 흐름과 구조를 파악하는 문제이다.
논리적 순서대로 알맞게 배열한 것을 묻는 문제로 출제된다.
먼저 선택지를 비교하여 첫 문단의 시작을 찾는 것이 편하다.
이후 글의 전개 방식을 유추한 뒤, 접속사, 지시어, 핵심어 등을 바탕으로 순서를 파악한다.
비판 및 반박
글의 주장과 근거를 파악하는 문제이다.
주장에 대한 반박을 묻는 문제로 출제된다.
주장에 무조건 반대하는 진술이 아닌 근거의 허점에 대한 반박을 찾는 것이 중요하다.
언어 이해 파트는 속도가 생명인 것 같다.
한 문제당 40초의 시간이 주어지므로 꼼꼼히 읽고 깊게 생각할 시간이 없다.
빠르게 읽고 한번에 답이 안보이는 것은 과감하게 찍고 넘어가야겠다…
그나마 다행인 것은 Way Fit Test는 GSAT 등 다른 시험들 보다 글의 내용이 적다.
아마 10분이라는 짧은 시간동안 15문제를 풀어야하므로 글의 길이도 상대적으로 적은 것 같다.
따라서 국어 문제 풀이용 스킬(앞,뒤 문장만 읽기 등)을 쓰는 것보다
글 전체를 빠르게 읽는 것이 더 효율적일 수도 있다.
마무리
태생 이과 머리인지라 국어를 잘 못했었다…
(그렇다고 수학을 엄청 잘하는 것도 아니다ㅎㅎ)
국어에 대한 자신감이 없어서 그런지 언어 이해 파트가 가장 어렵다고 느껴진다.
다른 파트들은 창의력 문제, IQ 테스트 문제처럼 재미있게 느껴지지만 언어 이해는 수능 국어 같다…
심지어 수능 국어 공부를 해본적이 없어서 남들보다 더 열심히 준비해야 한다.
(그래도 화산귀환 소설을 보면서 글 읽는 속도는 엄청 빨라져서 다행이다ㅎㅎ)
남은 기간이 일주일 정도이니 익숙해지도록 노력해야겠다.
다음 포스트에서는 언어 추리 파트를 알아볼 것이다.
-
요구사항 확인1
잡담
7월 28일 정처기 실기 시험이 보름 정도 남았다…
슬슬 정처기 벼락치기에 들어가야겠다.
그래도 필기 때보다는 시간이 널널하다.
필기는 전날 하루 공부하고 시험봤었다.(그래도 평균 80점 정도로 선방~)
시간도 많이 남았으니 시험 전 볼 내용을 대충 끄적이면서 해야겠다.
알아보기 쉽게 중요도에 따라 별을 붙여야겠다.
요구사항 확인 1
*소프트웨어 생명 주기
소프트웨어를 개발하기 위한 설계, 운용, 유지보수 등의 과정을 각 단계별로 나눈 것이다.
나선형, 프로토타입, 폭포수, 애자일 모형 등이 있다.
**나선형 모형
보헴이 제안한 모형으로 나선을 따라 돌듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 개발하는 모형이다.
계획 수립 -> 위험 분석 -> 개발 및 검증 -> 고객 평가
**폭포수 모형
이전 단계로 되돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토하여 승인 과정을 거친 후에 다음 단계를 진행하는 개발 방법이다. 고전적 생명 주기 모형이다.
***애자일 모형
고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형이다.
스크럼, XP, 칸반, Lean, 기능 중심 개발 등이 있다.
개인과의 상호작용, 실행되는 SW, 고객과 협업, 변화에 반응하는 것에 가치를 둔다.
**소프트웨어 공학
소프트웨어의 위기를 극복하기 위한 방안으로 연구되는 학문이다.
**스크럼
스프린트 계획 회의, 스프린트, 일일 스크럼 회의, 스프린트 검토 회의, 스프린트 회고의 프로세스를 거친다.
스프린트 : 실제 개발 작업을 진행하는 과정으로, 2~4주 정도 기간 내에서 진행한다.
***XP
고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성 향상
의사소통, 단순성, 용기, 존중, 피드백의 핵심 가치를 갖는다.
XP의 주요 실천 방법으로는 짝 프로그래밍, 공동 코드 소유, 테스트 주도 개발, 전체 팀, 계속적인 통합, 리펙토링, 소규모 릴리즈가 있다.
*데이터베이스 관리 시스템
DBMS는 사용자와 DB 사이에서 사용자의 요구에 따라 정보를 생성하고, DB를 관리해 주는 SW다.
요구사항 식별 시 가용성, 성능, 기술 지원, 상호 호환성, 구축 비용을 고려해야 한다.
***기능 요구사항
기능 요구사항은 시스템이 무엇을 하는지, 어떤 기능을 하는지 등 사옹자가 시스템을 통해 제공받기를 원하는 기능이나 시스템이 반드시 수행해야 하는 기능을 의미한다.
***비기능 요구사항
비기능 요구사항은 품질이나 제약사항과 관련된 요구사항으로, 시스템의 장비 구성, 성능, 인터페이스, 테스트, 보안 등의 요구사항을 말한다.
급 마무리
아직 요구사항 확인 1이 많이 남아있다…
근데 오늘 LG 스마트융합 트랙 서류 합격 소식을 받았다.
(이 트랙은 취업이 확정 되는 대학원 지원 과정이다.)
19일에 LG wayfit 인적성 시험과 20일 코딩 테스트를 해야한다…
(아아아ㅏ아악!! 아직 아무 준비도 못했는데!!! 할것도 많고!!)
정보처리기사 공부는 20일까지 좀 미뤄야겠다.
뭐 일주일 공부하면 실기 붙겠지~
-
입문 문제 - 프로그래머스
잡담
방학을 시작한지 벌써 보름이 지났다.
계획은 열심히 세웠는데…잘 실행되고 있지는 않은 것 같다.
LG Aimer 공부, 정처기 실기 공부, 코테 공부, 프로젝트, 영어 공부 등등 할게 너무 많다.
거기에 이사 준비도 해야하고…놀기도 해야한다~!~!!
먼저 코딩테스트 준비를 하려고 보니, 오랜만에 C++을 사용했다고 너무 어색했다.
C++에 익숙해질 필요가 있었다.
간단하게 프로그래머스 입문 100제를 풀어 손에 익히고, 부족한건 다시 살펴보며 적응했다.
중간중간 친구 생일, 이사 문제 등이 겹쳐 생각보다 오래 걸렸다…
2~3일이면 다 풀 줄 알았는데 일주일이나 걸렸다. 푸는데는 딱히 어려움은 없었다.
이번 포스트에서는 100 문제를 풀면서 꼭 알아야 하거나 새롭게 알게 된 내용을 정리할 것이다.
프로그래머스 입문 문제
문제 풀면서 C++ 사용 시 꼭 알아야 하는 것, 알아두면 좋은 것을 정리하니 15문제 정도가 나왔다.
각각 문제에 대해 알아보자.
10 중앙값 구하기
sort를 사용했다. algorithm 헤더파일을 추가해야 한다.
함수 인자로는 이터레이터를 지원하는 컨테이너의 시작과 끝이 입력된다.
컨테이너란 데이터를 저장하고 관리하기 위한 클래스를 말한다.(array, vector, list, map, deque 등..)
sort는 C++ STL에서 제공하는 함수로, nlogn의 시간복잡도를 보장하는 오름차순 정렬 함수이다.
인자에 비교 함수를 추가해 오름차순 뿐만아니라 다른 기준으로 정렬도 되지만, 이건 나중에 알아보자.
#include<algorithm>
sort(a.begin(),a.end());
13 피자 나눠 먹기(1)
ceil를 사용했다. cmath 헤더파일을 추가해야 한다.
무조건 소수점 자리를 올림한다.
#include<cmath>
ceil(Z);
14 피자 나눠 먹기(2)
__gcd를 사용했다. algorithm 헤더파일을 추가해야 한다.
두 수의 최대공약수를 구하는 함수이다.
#include<algorithm>
__gcd(a,b);
20 배열 뒤집기
vector를 순회할 때는 여러 방법이 있다.
인덱스를 통해 접근할 수 있고, iterator를 통해서 접근할 수도 있다.
인덱스를 통한 접근법
for(int i=0;i<vec.size();i++)
answer.push_back(vec[i]);
iterator를 통한 접근법
for(vector<int>::iterator i=vec.begin();i<vec.end();i++)
answer.push_back(*i);
21 문자열 뒤집기
reverse를 사용했다. algorithm 헤더파일을 추가해야 한다.
함수 인자로는 이터레이터를 지원하는 컨테이너의 시작과 끝이 입력된다.
해당 원소를 거꾸로 뒤집는다.
#include<algorithm>
reverse(a.begin(),a.end());
25 특정 문자 제거하기
find를 사용하여 string에서 특정 문자의 존재 유무를 찾을 수 있다.
찾고자 하는 문자가 존재한다면 해당 문자의 위치를 반환하고,
존재하지 않다면 string::npos를 반환한다.
find 호출 주체와, 찾고자 하는 문자열 모두 string type이어야 한다.
#include<string>
if(a.find(b)!=string::npos) ~~~;
추가로 algorithm에서도 find가 있다.
범위 내 원소들 중에서 value와 일치하는 첫번째 원소의 iterator를 반환한다.
일치하는 원소가 없을 경우 마지막 iterator를 반환한다.
#include<algorithm>
find(vec.begin(), vec.end(), a); //실패 시 vec.end() 반환
34 모스부호(1)
unordered_map은 키-값 쌍의 데이터를 저장하는 해시 테이블 기반의 맵이다.
중복된 키값을 가질 수 없으며, 순서를 보장하지 않는다.
해시 테이블을 사용해 상수의 시간복잡도로 빠른 검색, 삽입, 삭제 등이 가능하다.
first,second를 통해 key와 value에 접근할 수 있다.
#include<unordered_map>
unordered_map<int,char> umap {% raw %}{{1,'a'},{2,'b'}}{% endraw %};
umap.find(1)->second //a
istringstream을 사용해서 string을 특정 문자 기준으로 분리할 수 있다.
sstream 헤더파일을 추가해야 한다.
#include<string>
#include<sstream>
istringstream str(letter);
string word;
while(getline(str,word,' ')){
a.push_back(word);
}
38 2차원으로 만들기
2차원 vector의 경우 열 index를 넣기 전 행 index를 추가해 주어야 한다.
#include<vector>
vector<vector<int>> vec;
vec.push_back(vector<int>());
vec[0].push_back(123);
44 팩토리얼
함수 선언과 호출은 아래처럼 C와 동일하다.
int factorial(int n){
if(n<=1)
return 1;
return n*factorial(n-1);
}
factorial(n);
49 컨트롤 제트
compare을 통해 두 string 문자열을 비교할 수 있다.
두 문자열이 같으면 0을 반환하고, 다르면 -1을 반환한다.
#include<string>
#include<iostream>
if(a.compare(b)==0)
cout << "같은 문자" <<endl;
57 영어가 싫어요
나도다…나도 영어가 싫다…
substr을 통해 string 문자열을 일부 추출할 수 있다.
추출을 시작할 위치와 추출할 크기를 인자로 받는다.
erase를 통해 문자열을 삭제할 수도 있다.
삭제할 문자열의 시작 위치와 크기를 인자로 받는다.
#include<string>
a.substr(0,3);
a.erase(0,2);
문자에서 숫자, 숫자에서 문자로 변경이 필요할 때가 있다.
stoi, stol, atoi 등을 통해 문자열을 int, long 등으로 변환하거나 char 문자를 int로 변환할 수 있다.
또한 to_string을 통해 정수를 문자열로 변환할 수도 있다.
strnum = to_string(num);
num = stoi(strnum);
58 인덱스 바꾸기
swap을 통해 두 값을 바꿀 수 있다.
swap(str1[0],str1[3]);
82 안전지대
C++에서 함수 호출 방법으로는 크게 call by reference와 call by value가 있다.
call by value의 경우 인자 값이 매개변수에 복사되어, 매개변수에 조작을 가해도 인자에 영향을 안준다.
44 팩토리얼 문제처럼 선언하고 호출한다.(C와 동일)
call by reference의 경우 인자 값이 매개변수로 복사되는 것은 동일하지만, 주소 값이 복사되어 매개변수 조작 시 인자에도 영향을 준다.
C++에서는 C와는 다르게 참조변수가 추가되어, 매개변수를 참조변수로 선언 가능하다.
void swap1(vector<vector<int>> &a,int i, int j){
int tmp;
tmp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = tmp
}
swap1(a,2,3);
90 등수 매기기
10 중앙값 구하기에서 sort를 사용하여 정렬했었다.
이때 오름차순으로 정렬되었었는데, 내림차순으로는 어떻게 정렬할까?
sort함수의 3번째 인자로 사용자 정의 함수를 넣으면 된다.
#include<algorithm>
bool compare(double a, double b){
return a>b;
}
sort(a.begin(),a.end(),compare);
94 이진수 더하기
문자열의 마지막에 삽입은 push_back 또는 +=으로 추가할 수 있다.
push_back의 경우 char type만 삽입할 수 있으며, +=은 string type을 추가할 수 있다.
문자열의 특정 위치 삽입은 insert를 통해 이루어진다.
삽입하고자 하는 위치와 문자열을 인자로 받는다.
#include<string>
a.insert(0,b);
마무리
코딩테스트 공부 첫 시작으로 100문제 푸는건 좋은 선택이었다.
문제를 풀면서 정리하다 보니 생각보다 기본기가 많이 부족했다는 것을 알게 되었다.
따로 필수 문법과 알고리즘을 정리해 봐야겠다.
추가로 책도 사서 한번 봐야겠다.
프로그래머스에서 책 코딩 테스트 합격자 되기 c++편이 올해 5월에 나왔다.
구성을 살펴보니 알고리즘 효율 분석, 필수 문법,
배열, 스택, 큐, 해시, 트리, 집합, 그래프, 백트래킹, 정렬, 시뮬레이션, DP, 그리디 등
내가 원하는 내용이 모두 들어있다.
거기에 프로그래머스 문제 기준 설명이 되어있기 때문에 더더욱 마음에 들었다.
앞으로 이 책을 사서 문법과 알고리즘을 정리하고, 문제들을 풀어봐야겠다~!~!!
-
Github 블로그 만들기(3)
Github 블로그 포스팅하기
여기까지 따라왔으면 기본적인 블로그의 형태가 완성되었을 것이다.
하지만 아직까지 기본 카테고리에 내가 올리지 않은 다양한 포스트들이 올라와 있을 것이다.
지금부터 카테고리를 정리하고, 포스팅하는 방법을 알아보자.
포스팅
포스팅 하는 방법은 아주 간단하다.
폴더를 살펴보면 _pages 폴더가 있다. 이 안에 기본 폴더들이 있는데, 해당 폴더들이 각각 가장 큰 카테고리가 된다. 안에 생성된 폴더들은 서브 카테고리가 되고, .md로 작성된 파일이 포스트가 된다.
우리는 원하는대로 폴더를 만들어 카테고리를 구분하고, .md 스크립트를 추가해 포스팅을 하면 된다.
이때 각 폴더에는 index.md파일이 무조건 들어있어야 한다.(이 파일이 없으면 해당 카테고리 인식을 못한다.)
이제 포스팅을 위해 .md파일을 살펴보면 기본적으로 아래 사진과 같은 설정을 할 수 있다.
title은 해당 포스트의 제목이 된다.
tags를 통해 해당 포스트의 태그를 추가할 수 있으며, 검색 시 유용한 역할을 한다.
date는 포스트를 작성하고 있는 날자가 되며, 해당 날자는 미래가 될 수 없다.
thumbnail은 assets/img에 있는 이미지를 사용하여 포스트에 대표되는 이미지를 적용할 수 있다.
기본적인 셋팅이 완료되면, 바로 밑에 내용을 작성하면 된다.
(맞다! 해당 내용을 작성하기 전, 인코딩은 무조건 utf-8로 설정하고 수정해야 한다!)
포스트 내용 중 머리글로 많이 쓰이는 헤더 부분은 # 을 통해 표현할 수 있다.
또한 헤더와 내용을 나누는 직선으로 ---를 사용하여 구분할 수 있다.
# 헤드 내용
---
내용을 작성하다가 강조하고 싶은 부분은 억음을 통해 표현할 수 있다.
이미지 삽입의 경우  를 통해 해당 경로에 있는 이미지를 넣을 수 있다.
하이퍼링크는 [내용](링크하고 싶은 주소)를 통해 표시할 수 있다.
방문자 수
이정도만 하면 얼추 느낌있는 간단한 포스팅을 할 수 있다.
이제 완성된 포스트를 올리기만 하면 된다!!
라고 생각했지만 아직 설정 안해준 것이 하나 남아있었다.
각각의 포스트를 살펴보면 방문자 수를 나타내는 눈 모양 표시가 있다.
이 표시는 해당 테마에서 goatcounter를 통해 구현한 방문자 수이다.
이 방문자 수가 제대로 작동하려면 수정해야 할 것이 좀 있다.
먼저 아래 링크를 통해 goatcounter에 가입을 해야한다.
https://www.goatcounter.com/signup
계정 생성을 통해 만들어진 my_code는 https://[my-code].goatcounter.com 내 goatcounter의 주소가 된다.
계정을 생성했으면 _config.yml 파일의 goatcounter_code를 내 주소로 바꾸자.
이제 내 goatcounter의 주소로 들어가보자.
우측 상단을 살펴보면 setting을 찾을 수 있다.
Setting에서 Allow adding visitor~~~를 체크해 주면 내 포스트의 방문자 수 확인이 활성화 된다.
마무리
지금까지 내 블로그의 글을 따라왔으면 Github 블로그를 운영할 준비가 완료 되었을 것이다.
처음 블로그를 만들 때는 막막하고, 어디서부터 접근해야 할지 잘 몰랐었지만, 뚝딱뚝딱 헤딩하다 보니 이렇게 번듯한 블로그가 완성되었다.
아직은 깃허브 블로그 만들기 글밖에 안올린 애기 블로거지만, 앞으로 코딩 테스트 공부, 프로젝트, 자격증, 대외활동 등 다양한 포스트를 올릴 것이다.
내가 작성한 작은 글들이 많은 사람들에게 도움이 되었으면 좋겠다!:D
-
Github 블로그 만들기(2)
Github 블로그 꾸미기
이전 포스트에서 열심히 github 블로그를 만들고 실행시키는 것까지 성공했다!
하지만 jekyll에서 기본적으로 제공하는 형식은 너무 밋밋하고, 가독성도 떨어진다.
이제부터 내 블로그에 좀 더 개성을 추가하고, 가독성을 높이기 위해 테마를 적용해 보자!!
테마 정하기
블로그를 꾸미려면 먼저 내 블로그에 적용하고 싶은 테마를 찾아야 한다.
jekyll theme 사이트에 들어가서 직접 찾아도 되고, 국룰 테마를 적용해도 된다.(여러 블로그에서 다양하게 추천을 많이 해준다.)
나는 여러 테마들을 살펴보고, 다양한 github 블로그들을 뒤적거린 결과 이 테마가 가장 마음에 들었다.
https://github.com/byanko55/jekyll-theme-satellite?ref=jekyll-themes.com
좌측에 카테고리별 정리가 깔끔하고, 프로필 사진도 넣을 수 있으며, 다크모드, 로딩뷰, 검색 기능 등 여러 디테일적인 요소가 포함되어 있다. 가장 결정적인 부분은 깔끔하면서 화려하다!(허허허 취향 반영~)
테마 적용하기
테마 적용하는 방법은 아주 간단하다.
자기가 원하는 테마의 github 링크로 들어가서 zip파일을 다운받은 후 내 폴더에 복붙하면 된다. 이때 겹치는 파일들이 있는데, 대치해 주면 된다.
이제 다시 로컬 서버에 띄워보자.
bundle exec jekyll serve
오잉? 오류가 발생했다.
Could not find gem 'jekyll-sitemap (~> 1.3)' in locally installed gems.
Run 'bundle install' to install missing gems.
아하! bundle을 설치하라는 메시지이다. 설명대로 설치해 주자.
bundle install
다시 실행시켜 보면 태마가 잘 적용된걸 확인할 수 있다.
테마 수정하기
테마까지 적용했으니 기본 포스트들이 올라와 있는 블로그를 완전히 내 정보로 바꿔보자.
복붙했던 폴더를 살펴보면 _config.yml 파일을 확인할 수 있다.
이 파일을 통해 블로그 이름, 설명, 로고, Social link 등을 수정할 수 있다.
이때 이미지 같은 경우 우너하는 이미지를 assets/img 폴더에 넣어야 이미지를 넣을 수 있다.
"/assets/img/OOO.png"
음… 사이드바에 방문자수가 나왔으면 좋겠다. 깃허브 방문자 수처럼 전체 방문자 수와 그날 방문자 수가 나오면 좋을 것 같다. 이를 한번 추가해보자!
_includes폴더에 가보면 sidebar.html을 찾을 수 있다.
sidebar의 가장 밑에 추가하고 싶으니 contact-lis의 밑 부분에 추가를 해보자.
추가하는 방법은 간단하다. Hits사이트에 가서 target url을 수정하고, 원하는 색과 아이콘을 골라 적용하면 된다.
https://hits.seeyoufarm.com/
만들어진 HTML LINK를 복사하여 sidebar.html에 잘 복붙하자.(기본적인 html 사용법은 간단하니 조금만 가지고 놀다보면 잘 할 수 있을 것이다.)
여기까지 하면 기본적인 테마 수정은 끝이난다~!~!!
(물론 더 열심히 꾸미면 많은 기능을 넣을 수 있지만…이정도만 해도 충분한 것 같다!)
마무리
지금까지 간단한 테마 적용을 알아봤다.
블로그를 만들고, 테마까지 수정했으니 이제 포스팅만 하면 된다!
마지막으로 다음 포스트에서 포스팅 방법을 알아보자!
-
Github 블로그 만들기(1)
잡담
벌써 한학기만 더 다니면 졸업이다.
슬슬 취업하려면 자기소개서도 작성하고 코딩테스트도 봐야한다.
내 지난 대학생활을 돌아보니 열심히 전공 공부하고 활동을 많이 한 것 같지만 정작 제대로 남아있는 기록이 없다…
심지어 코딩테스트는 공부도 안해서 고딩 때 정올 나갔던 실력 그대로다…
(그대로면 다행이지 더 퇴화된 느낌이다)
많이 늦은 감이 있지만, 블로그를 만들어서 앞으로의 공부를 정리해보자! 늦었다 생각할 때가 가장 빠른법!!
막상 블로그를 쓰려고 하니 어디서부터 뭘 접근해야할지 모르겠다.
네이버 블로그, tistory, github, velog 등 종류도 엄청 많다.
일단 블로그 종류를 선택해아 한다.
친구들은 사용하기 편한 tistory, velog를 많이 쓰지만, 역시 개발자라면 github 블로그가 최고지!
잔디도 심을 수 있다는 장점이 있다!
이왕 Github 블로그를 만드는 김에 내 첫 포스팅은 Github 블로그 만들기가 좋을 것 같다.
Github 블로그 만들기
아래 내용들은 내가 Github 블로그를 만들 때 겪었던 수행착오들이다.
꼭 이 순서를 따를 필요는 없고, 이미 설치되어 있는 것들은 패스해도 된다.
우선 깃허브에 들어가 USERNAME.github.io 레포지토리를 만들어야 한다.
이게 웬걸, 이미 5년전에 만들어 놓았었다.
잘 만들어 놓았으니 내 컴퓨터에 clone해 오자.
이제 Github 블로그를 만들 때 사용하는 jekyll를 설치해보자.
jekyll는 정적 사이트 생성기로 Github 블로그 만들 때 아주 유용하다.(여러 테마도 가져와 쓸 수 있다!)
jekyll를 설치하기 전! 미리 설치해야할 것들이 좀 있다.
내가 Macbook을 산지 얼마 안되어 내 MAC은 아무것도 없는 완전 기본 상태이다.
그래서 MAC용 패키지 관리 어플리케이션인 brew를 설치해야한다. 이걸 설치해야 터미널 명령으로 프로그램 설치가 가능하다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
이 명령어를 터미널에 입력하면 알아서 설치가 된다.
설치 완료 후 brew -v로 버전 확인을 할 수 있다. 버전이 뜨면 성공적으로 다운로드가 된 것이고,
만약 zsh: command not found: brew 이런 메시지가 뜨면 환경변수 설정을 추가로 해주어야 한다.
zshrc에 homebrew path를 추가하자.
echo 'export PATH=/opt/homebrew/bin:$PATH' >> ~/.zshrc
이 명령어를 통해 경로를 추가하고, 아래 명령어를 통해 반영하자.
source ~/.zshrc
얼른 jekyll를 설치해서 블로그를 만들고 싶다…
이 상태로 ruby의 패키지 매니저인 gem을 사용해서 gem install jekyll bundler를 하고싶지만,
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
이런 오류가 뜬다.
macOS는 기본적으로 ruby가 설치되어 있는데 왜 이런 오류가 뜨는걸까?
아마 기본적으로 설치되어 있는 system ruby를 이용하고 있기 때문에 권한이 없어 그런 것 같다.
sudo를 통해 설치할 수 있지만, rbenv를 통해 최신 ruby를 받아 해결해보자.
먼저 rbenv를 설치한다.
brew install rbenv ruby-build
rbenv version을 치면 system Ruby를 쓰고있다는 것을 알 수 있다.
rbenv install -l을 통해 사용 가능한 ruby 버전을 살펴보자.(나는 3.3.3이 최신 버전이었다.)
이제 ruby의 최신 버전을 다운로드하자.
rbenv install 3.3.3
자 이제 설치를 했으니 rbenv version을 통해 다시 확인해보자.
어랏? 아직도 system Ruby를 사용중이다.
rbenv global 3.3.3을 통해 바꿔주어야 한다.
다시 확인해보면 제대로 적용된 것을 알 수 있다.
마지막으로 rbenv도 PATH 추가를 해야한다.
터미널에 vim ~/.zshrc를 입력하여 환경변수 설정해주는 곳으로 들어가보면 아까 넣어준 애도 보일 것이다.
그 밑에 이걸 추가해주자.
[[ -d ~/.rbenv ]] && export PATH=${HOME}/.rbenv/bin:${PATH} && eval "$(rbenv init -)"
~/.rbenv 디렉토리가 존재하는지 확인하고, rbenv의 bin 디렉토리를 현재 PATH에 추가해 주는 역할을 한다. 그리고 rbenv를 초기화하여 쉘에서 명령을 인식하도록 설정한다. 이렇게 하면 터미널에서 rbenv를 직접 사용할 수 있다.
이제 source ~/.zshrc를 통해 적용하면 된다.
엄청 돌고 돌았지만 드디어!!! jekyll를 설치해보자~!~!!
gem install jekyll bundler
성공적으로 설치가 된다!
이제 clone해온 내 github.io 폴더에 가서 jekyll를 작동시켜보자!
우선 필요없는 파일들은 전부 없애준다.(index.html)
터미널에서 해당 폴더로 이동 후 jekyll new ./를 하면 jekyll가 만들어진다.
이후 번들도 설치해야한다.
bundle install
여기까지 진행했으면 jekyll를 로컬서버에 띄울 수 있다.
bundle exec jekyll serve
우왕!! 잘 작동한다!!!
http://127.0.0.1:4000 들어가보니 잘 작동한다! 너무 감격스럽다ㅠㅜㅠㅜ
이제 github에 push하자~!~!!
좀 기다렸다가 내 주소 https://tsatoa.github.io/에 들어가니 로컬에서 작동한 것과 똑같이 잘 보인다.
마무리
지금까지 첫 블로그를 만들어보았다.
이대로 설정을 좀 해주고, 바로 사용할 수 있지만, 나는 좀 더 깔쌈한 블로그로 꾸미고 싶다.
기본적으로 생성된 블로그는 너무 허전하고, 테마도 마음에 안든다. 뜯어 고쳐!!
다음 포스팅에서는 테마 적용을 해보자~!~!!
Touch background to close