본문 바로가기

전체 글54

[싸피일기] SW 역량테스트 A형 대비 스터디 회고 (A+ 취득) 싸피 1학기를 수료하기 위해서는 모의 SW 역량테스트에서 일정 이상의 등급을 취득해야하는데, 비전공자의 경우 IM, 전공자의 경우 A 취득이 필수로 요구된다. IM이 기본적인 자바 문법을 활용해 구현하는 문제라면, A형은 알고리즘에 대한 학습이 요구된다. 비전공자이기때문에 최소 요구사항은 IM이지만 A형 이상을 취득할 경우 SW 역량테스트 B형에 응시할 수 있기 때문에 A형 취득을 목표로 스터디를 꾸렸다. SSAFY에서 응시하는 IM과 A형은 모의 시험이지만, B형은 무려 실제 역량테스트로 치뤄진다. 즉 삼성 계열사 입사 시 우대가 적용된다!!! 스터디를 제외한 개인적인 알고리즘 공부 내용이나 방법은 아래 포스팅에 담아두었다. 2024.02.18 - [Writing] - [싸피일기] 백준 골드5 달성 [.. 2024. 3. 14.
[싸피일기] Web(front) 페어 프로그래밍 회고 싸피의 1학기는 페어 프로그래밍을 주축으로 돌아간다. 하나의 과목이 끝날때마다 페어와 함께 관통 프로젝트를 진행하기 때문에 끊임없이 협업을 경험할 수 있다는게 싸피의 장점😊 이때까지의 페어 프로그래밍 이때까지 Java, 일타싸피, Web(front)까지 총 세 번의 페어 프로그래밍을 진행하였다. 그런데 Java와 일타싸피를 거치면서 어떤 방식으로 협업을 진행해야할지 고민이 들기 시작했다. 번번히 최종 프로젝트 과정이나 결과가 마음에 들지 않았기 때문이다. Java 프로젝트를 진행할 때는, 서로 하나의 모델을 구현하고, 이후 이를 통합하는 컨트롤러를 구축하는 방식으로 진행했다. 그러다보니 비슷한 기능임에도 불구하고 중복으로 개발하는 비효율이 발생했다. 그리고 비슷한 기능임에도 함수명에 일관성이 없어 컨트롤.. 2024. 2. 24.
[한 권으로 읽는 컴퓨터 구조와 프로그래밍] 1. 컴퓨터 내부의 언어체계 비트와 논리 연산 비트는 컴퓨터가 사용하는 언어로서, 0과 1을 기호로 사용한다. 하지만 컴퓨터는 0과 1만을 가지고도 수많은 말을 할 수 있다. 논리적 연산을 수행하기도 하며, 정수와 실수를 표현할 수 있고, 심지어 인간의 언어와 색깔까지도 표현할 수 있다. 먼저 비트는 논리연산을 통해 다른 비트들이 표현하는 내용으로부터 새로운 비트를 만들어낼 수 있다. 이 논리 연산을 하기위한 연산 규칙들의 집합을 불리언대수라고 한다. 수와 마찬가지로, 논리 연산에서도 결합법칙, 교환법칙, 분배법칙이 적용 가능하다. 기본 불리언 연산자에는 NOT, AND, OR이 있다.NOT은 논리적 반대를 뜻한다. AND는 둘 이상의 비트에 적용되며, 모든 비트가 참이면 AND 연산의 결과도 참이 된다. OR연산은 둘 이상의 비트.. 2024. 2. 21.
[싸피일기] 백준 골드5 달성 싸피 입과하면서 만든 백준 아이디가 드디어 골드를 달성했다. 알고리즘 수업을 들으면서, 알고리즘 문제해결 역량이 정체한 것 같다는 느낌을 받았다. 분명 열심히 공부를 하고 있는건 같은데, 내 실력은 싸피 입과 전과 크게 다르다는 느낌을 못받았기 때문이다. 그래서 강사님께 알고리즘 학습의 방향에 대한 조언을 구했더니 크게 두 가지 정도를 이야기해주셨다. 1. 어느 정도 실력을 달성하기 전까지는 문제를 많이 풀어볼 것 2. 문제를 고를 때는 사람들이 많이 풀어본 문제 위주로 선정할 것 사람들이 많이 풀어본 문제는 일단 문제에 치명적인 오류가 없을 가능성이 높고, 문제 난이도가 너무 낮거나 너무 높은 일이 잘 없기 때문이라고 하셨다. 그래서 우선적으로 백준 골드를 달성하는 것을 목표로 삼기로 했다. 목표 달성.. 2024. 2. 18.
[Java] 백준 11723번 - 집합 https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 접근 방법 문제를 보자마자 떠오르는 방법은 HashSet 자료 구조를 이용하는 것이었다. 그래서 먼저 HashSet으로 문제를 해결 한 후, 비트마스킹을 학습하고자 리팩토링 해보았다. HashSet import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashSet; import java.u.. 2024. 2. 14.
[Java] 백준 1149번 - RGB거리 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 접근 방식 가장 먼저 생각나는 것은 그리디적인 접근이었다. i번째 집을 고를 때, i-1에서 선택된 색깔을 제외하고 가장 저렴한 집을 고르는 방식이었는데, 설계를 한 후 대입해봤을 때 다음과 같은 테스트케이스에서 최솟값을 구하지 못할 것으로 예상되었다. R G B i - 1번째 집 32 83 55 i번째 집 51 37 63 i + 1번째 집 89 29 100 즉 완전 탐색을 .. 2024. 2. 10.
[Java] 멀티 스레드 구현하기 혼자서 공부하는 컴퓨터 자료구조 + 운영체제 책을 보고 있는데, 해당 책은 깃허브를 통해 심화 코드를 제공하고 있다. (https://github.com/kangtegong/self-learning-cs) 그런데 프로세스와 스레드 코드는 C++과 python로만 제공되고 있어서, 동일한 흐름을 가지고 java로 직접 구현을 해 보았다. 자바에서는 멀티 프로세싱을 직접적으로 지원하지 않고 있다. 도커 등을 이용해서 병렬 실행을 구현할 수는 있지만, 해당 글에서는 멀티 스레딩을 위주로 서술한다. 사전 학습 스레드와 멀티 스레드 개념이 낯설다면 아래 글을 먼저 읽고 오는 것을 추천한다. 2023.10.13 - [CS/운영체제] - [운영체제] 스레드와 멀티 스레드 [운영체제] 스레드와 멀티 스레드 스레드의 의.. 2024. 1. 28.
[싸피일기] 컴퓨터 구조 + 운영체제 CS스터디 회고 평소에도 비전공자로서 기본적인 CS 지식을 쌓을 필요가 있겠다는 필요성을 느끼고 있었는데, 혼자서 공부를 하면 번번히 앞부분을 열심히 공부하고 완독에는 실패하는 일들이 벌어졌다. 그래서 싸피 생활이 어느 정도 적응되자마자 반 동기들과 CS 단기 스터디를 꾸렸다. 목표는 2주만에 한 권 완독하기. 교재 선정 한 권으로 읽는 컴퓨터구조와 프로그래밍과 혼자서 공부하는 컴퓨터 구조+운영체제를 추천 받았는데 단기간내에 빠르게 기초 지식을 쌓기에는 설명이 더 자세하고 필수적인 내용들로만 이루어진 혼공컴이 더 적합하다고 생각해서 이 책으로 선정했다. 스터디 운영 방식 처음 스터디를 꾸릴 때 올렸던 모집 글이다. 혼자서 CS 스터디 회고를 찾아보며 스터디의 방향성을 잡았고, 세부 사항은 스터디원들과 이야기를 나눠서 정.. 2024. 1. 28.
[Java] 클래스.toString()을 public으로 선언해야 하는 이유 문제 발생 Cannot reduce the visibility of the inherited method from Object 문제 원인 메소드를 오버라이딩 할 때, 접근제한자의 범위를 줄일 수는 없다. Person 클래스에서 public으로 study() 메소드를 선언한 다음, Person을 상속받은 Student 클래스에서 default 접근제어자로 메소드 오버라이딩을 하려고 하자 예외가 발생한다. 그런데 Person클래스에서는 다른 클래스를 extend 하지 않았는데도 toString() 메소드를 default로 선언하면 예외가 발생하게 된다. https://docs.oracle.com/javase/8/docs/api/ Java Platform SE 8 docs.oracle.com 이 내용은 Jav.. 2024. 1. 18.