목록전체 글 (90)
Post-IT
2주차 프리코스 역시 같은 방식으로 진행되었다. 이번 과제는 자동차 경주 게임 구현이었다. 함정 같은 건 없어보였고, 전진 여부만 판단해서 횟수별로 진행상황을 출력하면 됐다. 이번 과제는 완료는 물론이고, 세 가지 목표를 잡고 진행했다. 1. 의미 있는 함수/변수명을 사용하자 아래 Car 클래스의 함수를 일부 가져와봤다. 함수명이 기능을 내포하면서 간략하게 표현될 수 있도록 내 나름대로 의미 있는 이름들을 지어주려고 노력했다. 2. 한 함수나 메인함수에 기능을 때려넣지 말고 기능별로 함수를 구현해보자. 다음은 내가 제출한 함수의 메인문이다. 각각의 기능 별로 함수를 만들고 함수명만으로도 프로그램의 Flow를 따라갈 수 있게 프로그램을 작성하였다. 3. 깃 커밋을 관리하면서 개발을 진행하자 사실.. 자동차..
개인적인 사정으로 3주차가 진행중인 시점부터 회고를 시작하게 되었다. 과제 완료 후에 바로 하는 것이 효율이 좋다고 생각하는데 최대한 기억을 더듬어가며 회고록을 작성해 보려고 한다. 미션 내용을 확인해보니 글 초반부터 익숙하지 않은 내용들이 나와 조금 쫄았다..😥 깃 사용이 익숙하지 않아 Fork해서 개인 디렉토리로 과제를 진행하는 것부터, 과제 제출까지 정말 알고 있던 내용이라곤 찾아볼 수가 없었다. 우테코 커뮤니티만 봐도 잘하시는 분들이 너무 많았지만, 내 속도대로 내가 할 수 있는것 부터 천천히 해보자는 마음으로 1주차 과제를 진행했었던것 같다. 그래도 1주차라 그런지 과제 내용은 그리 어렵지 않았던 것 같다..🤭 (구현 자체는 어렵지 않았다.) 전공생들이라면 한번쯤은 구현해 봤을 숫자야구 게임 만..
1. 문제 분석이 문제는 알고리즘 개념이 필요없는 간단한 수학 연산 문제이다. 최고점을 만점으로 잡고 산출한 점수의 평균을 구하면 된다 시간복잡도 : O(N)알고리즘 : 평균 값 구하기 2. 문제 풀이점수 A, B, C, .. etc를 다시 평균 내면 {A/M*100 + B/M*100 + ...} / 과목 수 이므로 정리하면 (A+B+C)*100 / M * (과목수)이다.1. 정수배열을 입력 받는다.2. 최고점수를 찾는다.3. 공식에 대입한다. 즉, 최고점만 찾는다면 해결되는 문제이다. N의 크기가 작아 시간 제한에 크게 영향을 받지 않는다. (최대 O(n^3)) 3. 코드 구현import java.util.Scanner;class Main{ public static void main(String arg..
1. 문제 분석처음에 문제를 잘못 읽어 이해를 못했는데 수를 더하는 것이 아닌 그냥 각 자리의 숫자(0~9)를 더하면 되는 것이다. 알고리즘 보다는 문자열을 다룰 줄 아는지 물어보는 수준의 문제이다. 시간복잡도 : O(N)알고리즘 : 더하기? 2. 문제 풀이N의 크기가 작아 시간제한은 크게 구애 받지 않고, String 자료형을 int 배열로 변환하여 더해주면 된다. 3. 코드 구현import java.util.Scanner;class Main{ public static void main(String args[]) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); String sNum = scanner.next(..
자료구조는 데이터를 표현하고 저장하는 방법을 말한다. 프로그램은 데이터를 표현하고, 표현된 데이터를 처리하는 것을 말한다. 여기서 사용하는 데이터의 저장을 담당하는 것이 자료구조이다. 데이터의 저장은 우리는 사실 프로그래밍을 배우면서, 이미 자연스럽게 알고 있는 내용이다. 정수를 저장하기 위해선 int형 변수를 선언하거나, 구조체를 선언하는 등, 이러한 변수 역시 자료구조에 해당한다. 앞으로 다뤄볼 자료구조는 정수형 실수형과 같이 단순한 구조는 아니다. 리스트, 스택, 트리 와 같은 선형 / 비선형 자료구조에 대해서 공부한다. 파일 역시 데이터를 저장하는 도구이기 때문에 자료구조로 포함 시켰지만, 여기서는 선형구조와 비선형구조에 대해서 다룰 것이다.
군집화(Clustering)란 주어진 데이터들간의 유사도를 측정하고, 각각의 데이터 셋을 요약하고 정리하는데 매우 효율적인 방법이다. 하지만, 유사도에 따라 군집을 형성할 뿐 정답을 보장하지는 않는다. 군집화의 또 다른 목적은 숨어있는 새로운 집단을 발견하는 것이다. 군집화는 크게 계층군집, 분할군집 크게 두가지로 구분할 수 있다. 1. 계층군집(Hierachical Clustering) 모든 데이터가 자신의 군집에서 시작하여 유사한 데이터를 하나의 군집으로 묶는다. 이 데이터가 하나의 군집으로 묶일 때까지 반복한다. 2. 분할군집(Point Assignment) 분할군집에서는 먼저 군집의 개수 K를 미리 정한후 데이터를 K개의 군집화를 한후 다시 계산하여 다시 같은 연산을 반복한다.
일반적으로 우리가 아는 변수는 수학적인 의미의 가변적인 수를 말할 수 있다. 예를들어, "변수 (x, y)에 대한 2차함수 그래프를 그려라."와 같이 사실 변수라는 단어는 우리에게 매우 친숙하다. 우리가 앞으로 다룰 데이터의 변수도 크게 의미가 변하지는 않는다. 즉, 변수란 특정 조건에 따라서 변하는 값을 말한다. 변수보다는 확률변수라는 단어에 좀 더 친숙해 질 필요가 있다. 확률 변수의 정의는 다음과 같다. 무작위 실험을 했을 때, 특정 확률로 발생하는 각각의 결과를 수치적으로 표현하는 값을 말한다. 좀 더 쉽게 설명해서 동전을 던진다고 해보자. 동전의 앞면을 0, 뒷면을 1 이라고 했을 때, 0이 나올 확률은 1/2, 1이 나올 확률 역시 1/2이다. 이때 확률 변수를 0,1이고 두 확률변수에 대한 ..