전체 글

전체 글

    22.08.18 SSAFY 스터디 CS 발표 - Java 어셈블리어 분석

    22.08.18 SSAFY 스터디 CS 발표 - Java 어셈블리어 분석

    C언어 포인터는 왜 타입별로 구분되어 있는가? 내용 저번에 준배님이 제네릭 설명하실 때, 제가 주소의 크기는 같은데 왜 Int형 포인터와 double형 포인터를 구분하는지 질문한 적이 있습니다. 그래서 제가 C언어를 예시로 가져왔는데, 이게 어느정도 해답이 될 거 같습니다. #include int main() { int a = 300000000; // int형 변수에 300000000를 저장 double b = 3.0; // double형 변수에 3.0 저장 int * c = &a; // c는 a의 주소를 저장 double * d = &b; // d는 b의 주소를 저장 int e = a + *c; // a + (c가 가리키는 주소에 저장된 값) double f = b + *d; // b + (d가 가리키..

    [백준 1194번] 달이 차오른다, 가자. (C++)

    https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 달이 차오른다, 가자 문제는 벽 부수고 이동하기, 말이 되고픈 원숭이와 유사하며, BFS와 백트래킹을 이용하여 해결할 수 있습니다. 문제에서 열쇠는 'a', 'b', 'c', 'd', 'e', 'f만 등장합니다. 따라서 비트마스킹을 사용한다면, 현재 갖고 있는 열쇠의 현황을 6비트로 표현할 수 있습니다. BitMasking 예를 들어 111111은 6개의 키를 모두 ..

    2022.08.02일 서버 개발자 취준생의 성장 일지 ✍🏼

    현재는 SSAFY에서 교육을 받고 있고, 6명로 구성된 스터디 팀의 팀장을 맡고 있다. 스터디는 매주 3번 대면/비대면으로 진행하고 있고, 알고리즘과 CS 발표로 구성되어 있다. 💡 알고리즘 스터디 알고리즘 스터디는 팀원 간 역량 차이가 있어서, 팀원의 역량에 따라 단계별로 나누어 진행하고 있다. 팀원을 알고리즘 역량별 3단계로 나누고, 팀원들은 본인 단계에 할당된 4개의 문제를 풀어온 다음, 각자의 코드를 설명하는 방식으로 진행하고 있다. 여러 사람들의 코드를 볼 수 있기 때문에, 짧은 시간 동안 여러 풀이 방식들을 얻어갈 수 있다. 알고리즘 유형 또한 역량별로 구분하고 있다. 문제 풀이 속도가 빠르고, 이미 대부분의 유형을 풀어본 상위 단계의 팀원들은 여러 유형을 빠르게 복기하면서, 하위 단계의 팀원..

    [백준 9328번] 열쇠 (C++)

    https://www.acmicpc.net/problem/9328 9328번: 열쇠 상근이는 1층 빌딩에 침입해 매우 중요한 문서를 훔쳐오려고 한다. 상근이가 가지고 있는 평면도에는 문서의 위치가 모두 나타나 있다. 빌딩의 문은 모두 잠겨있기 때문에, 문을 열려면 열쇠가 www.acmicpc.net 열쇠 문제는 BFS로 해결할 수 있습니다. 상근이는 빌딩 가장자리의 벽이 아닌 곳을 통해 빌딩 안팎을 드나들 수 있습니다. 따라서, 평면도의 크기를 h + 1, w + 1로 선언하고, 가장자리를 '.'로 채워놓는다면, 상근이는 어느 위치에서 시작하던 상관 없습니다. 알고리즘의 기본 틀은 아래와 같습니다. 평면도를 순회하면서, 현재 가지고 있는 열쇠로 열 수 있는 문을 모두 개방한다. 평면도를 순회한다. 문이나..

    [백준 16920번] 확장 게임 (C++)

    https://www.acmicpc.net/problem/16920 16920번: 확장 게임 구사과와 친구들이 확장 게임을 하려고 한다. 이 게임은 크기가 N×M인 격자판 위에서 진행되며, 각 칸은 비어있거나 막혀있다. 각 플레이어는 하나 이상의 성을 가지고 있고, 이 성도 격자판 위 www.acmicpc.net 확장 게임 문제는 BFS를 이용하여 해결할 수 있습니다. 현재 순서인 플레이어의 성을 한 칸씩 이동시키는 작업을 Si번씩 반복하면 됩니다. ⚠️ 단, Si가 최대 109이므로 Si을 반복하며 성을 한 칸씩 이동시키는 과정에서 시간 초과가 발생할 수 있습니다. 따라서, Sn-1번째 성을 옮길 때, 옮겨진 성이 없다면, Sn번째부터는 성을 이동시키지 않는 방법으로 시간 초과를 방지할 수 있습니다. ..

    Java 입출력, Scanner와 BufferedReader의 비교

    Java 입출력, Scanner와 BufferedReader의 비교

    https://codingnotes.tistory.com/216 Java 입출력 (스트림, 버퍼) 스트림(Stream)이란? 먼저, 스트림 이란? 연속적인 데이터의 흐름 또는 데이터를 전송하는 소프트웨어 모듈을 의미합니다. 아래 그림처럼, 자바에서 입출력 스트림은 우리가 작성하는 응용프로그 codingnotes.tistory.com 스트림과 버퍼에 대한 포스팅은 위 링크에서 확인하실 수 있습니다. Scanner Java에서 키보드로부터 입력을 받는 방법에는 크게 두가지가 있습니다. Scanner를 이용한 방법과 BufferedReader를 이용한 방법입니다. Scanner에는 nextInt(), nextLine(), nextDouble(), nextFloat() 등의 메서드가 있습니다. 보시는 것처럼 입..

    Java 입출력 (스트림, 버퍼)

    Java 입출력 (스트림, 버퍼)

    스트림(Stream)이란? 먼저, 스트림이란? 연속적인 데이터의 흐름 또는 데이터를 전송하는 소프트웨어 모듈을 의미합니다. 아래 그림처럼, 자바에서 입출력 스트림은 우리가 작성하는 응용프로그램과 입출력 장치를 연결해줍니다. 응용 프로그램이 입력 스트림과 연결하면, 입력 스트림은 입력 장치를 제어하여 입력을 받고, 응용 프로그램에게 전달합니다. 출력도 마찬가지로, 응용 프로그램이 연결된 출력 스트림에 출력하면, 출력 스트림은 출력 장치를 제어하여 출력을 완성합니다. 즉, 자바 응용 프로그램은 입출력 스트림과만 연결하고, 입출력 스트림이 입출력 장치를 제어하고 담당하는 역할을 수행합니다. 하지만, 스트림이 실제 입출력 장치를 제어하는 것은 아닙니다. 스트림은 내부적으로 운영체제의 API인 시스템 콜을 호출하..

    2022.07.05일 서버 개발자 취준생의 성장 일지 ✍🏼

    📚 과제 전형 결과 앞서 진행한 스타트업의 과제 전형은 떨어졌다. 입사하고 싶었던 기업이었는데 정말 아쉽다. 기업의 입장에서는 달갑지 않을 수 있지만, 성장하고 싶다는 생각이 간절했기 때문에 부족했던 점을 간단하게라도 설명해주실 수 있는지 메일로 여쭤보았지만, 역시 형평성과 현업 일정으로 인해 답변을 받지 못했다.. 아마 이전 일지에 작성한 부분이 부족하지 않았나 싶다. 다음에도 공채가 뜨면 도전해볼 계획이다. 💻 네이버 인턴십 코딩 테스트 얼마 전 네이버의 Apollo CLC의 인턴으로 지원하였다. 긴장한 탓에 코딩 테스트의 마지막 문제를 효율성이 좋지 않은 알고리즘으로 풀어서 탈락을 예상하고 있었다. 결과 메일이 왔을 때, 이번에도 "더 좋은 기회로 만나 뵐 수 있으면 좋겠다.", "지향하는 방향성이..