1. 출처 5568번: 카드 놓기 예제 1의 경우 상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다. www.acmicpc.net 2. 설계 먼저 나는 카드의 조합을 생각했다. 만약 카드가 1,2,3,4가 있다고 할 때, 1과 2를 선택해서 12를 만드는 것과 2와 1을 선택해서 21을 만드는 것을 구분해야 한다고 생각했다. 그래서 순열을 써야한다고 생각했다. (만약 12, 21이 같다고 생각했다면 조합을 써야했다.) 1) 순열 설계 package BJ5568; import java.util.Scanner; public class 카드놓기 { static int n; static int k; static int[] nums; static boolean[] sel; //이미 ..
2달 전에 맞췄던 문제, 또 풀어본다. 너무 오랜만에 알고리즘을 푸니... static 쓰는 것도 까먹는 나... 오늘은 오랜만에 MST 문제를 풀어보았다. 다시 개념을 살펴보자면 MST는 최소신장트리이다. 신장 트리 중에 사용된 간선들의 가중치 합이 최소인 트리이다. 도로망, 통신망, 유통망 등 비용을 최소로 해야 이익을 볼 수 있을 때 사용한다. 대표적인 방법으로 크루스칼과 프림이 있는데, 오늘의 문제는 합집합 연산을 하고, 같은 부모를 갖는지 확인해야하는 작업이었기 때문에 딱히 MST 문제는 아니지만, 크루스칼이 적격이라고 생각해서 크루스칼로 풀었다. 2달 전에 나도 크루스칼로 풀었다는 사실! ^^ 1. 출처 1717번: 집합의 표현 초기에 $n+1$개의 집합 $\{0\}, \{1\}, \{2\},..
안녕하세요 : ) SSAFYicial 9기 신산하입니다. 9기 여러분은 2학기 공통 프로젝트에 집중하시기 바쁘실 텐데요! 면접은 잡혔지만, 공부하시기 쉽지 않으실 겁니다. 오늘은 그런 교육생 분들을 위해 준비했습니다 +__+ 이번 달의 기획 기사는 자바/Spring 관련 면접 질문 편입니다! 1. 객체지향과 절차지향의 차이는 무엇인가요? 객체지향 객체지향 프로그래밍이란 프로그램을 다수의 객체로 만들고, 이들끼리 서로 상호작용하도록 만듭니다. 예로 들면, 컴퓨터를 이루는 모니터 객체, 마우스 객체, 본체 객체 등이 있어 모든 부품을 적절히 연결하고 조립해서 컴퓨터가 제대로 작동하도록 만드는 것입니다. 대표적으로 JAVA가 객체지향 언어입니다. 절차지향 절차지향 프로그래밍은 개체를 순차적으로 처리해 프로그램..
안녕하세요 : ) SSAFYicial 9기 기자 신산하입니다. 방학 땐 그렇게 싸피에 나가 밥을 먹고 싶다는 생각이 컸는데, 싸피에 나와 2학기를 시작하니 기획 과정부터 모든 에너지를 쏟아붓는 지친 하루의 연속이네요 ㅎㅎ... 그리하여 오늘 기사는 잠시 방학 때로 돌아가는 시간을 갖도록 하겠습니다. 바로 잡페어 생생 후기!!! 지금 바로 시작합니다 : ) 1. 싸피 전형 입사 지원 오직 싸피에서만 가능하다구?! 입사 지원 일정은 다음과 같았습니다. ✅ 입사 지원 : 23.06.12 09:00 ✅ 서류 결과 확인 : 23.06.14 13:00 ✅ 면접/상담 신청 : 23.06.14 ~ 23.06.15 무려 115개사와 함께했던 싸피 잡페어였기에 꼼꼼히 회사소개서를 읽고, 원하는 회사에 지원해볼 수 있었던 ..
어제밤부터 고민하고 고민하던 문제! 이제는 그냥 외워야겠다라고 싶을 만큼 도전했다 ㅎㅎ.. 1. 출처 https://www.acmicpc.net/problem/3584 3584번: 가장 가까운 공통 조상 루트가 있는 트리(rooted tree)가 주어지고, 그 트리 상의 두 정점이 주어질 때 그들의 가장 가까운 공통 조상(Nearest Common Anscestor)은 다음과 같이 정의됩니다. 두 노드의 가장 가까운 공통 조상은, 두 www.acmicpc.net 2. 설계 처음에는 조상이라고 해서 크루스칼로도 생각해봤는데, 그건 찐 조상! 나의 최상위 조상을 찾아주는 알고리즘이기 때문에 아니라고 생각했다. 그 후에는 트리를 직접 만들어서 같은 두 노드를 같은 depth로 만들어 준 후 함께 올라가는 시나..
오랜만에 문자열 공부 지대로 해보고자 선택한 문제이다. 근데 너무 어렵다 ㅠ... 역시 카카오인가..? 1. 출처 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 예를 들어, "ababcdcdababcdcd"의 경우 문자를 1개 단위로 자르면 전혀 압축되지 않지만, 2개 단위로 잘라서 압축한다면 "2ab2cd2ab2cd"로 표현할 수 있습니다. 다른 방법으로 8개 단위로 잘라서 압축한다면 "2ababcdcd"로 표현할 수 있으며, 이때가 가장 짧게 압축하여 표현할 수 있는 방법입니다. 입출력 예 "aabbaccc" 7 "ababcdcdababcdcd" 9 ..
쉬운 문제일줄 알았는데, 시간과의 싸움이었던 문제 바로 기록 들어간다!!! 1. 출처 1593번: 문자 해독 첫째 줄에 고고학자들이 찾고자 하는 단어 W의 길이 g와 발굴된 벽화에서 추출한 문자열 S의 길이 |S|가 빈 칸을 사이에 두고 주어진다. (1≤g≤3000, g≤|S|≤3,000,000) 둘째 줄에 W, 셋째 줄에 S의 실 www.acmicpc.net 시간 초과와의 싸움 ㅠ 아래 설계에서 실패 이유까지 설명하겠다. 3. 설계 1) 실패한 설계 문제를 보면, 문자열 W가 랜덤순서이다. 만약 abcd라고 해보자 그럼 W는 abcd일 수도 있고, cdab일 수도 있다. 그리고 내가 찾은 벽화의 기록된 마야 문자열 S에 abcd, cdab라는 문자열이 부분 문자열로 포함되어 있는지를 찾는 문제이다. 그..
넘나 많은 데이터... 공공데이터로 이 엑셀 데이터를 쓰고 싶은데 js 파일로 노다가를 할 수도 없고, 대체 어떻게 하면 모든 정보를 json으로 바꿔다 쓸 수 있을까? 나는 local_code와 work_code 엑셀파일의 수 천개의 데이터를 읽어올 것이다. 여기서는 work_code만 작성하겠다. 왜냐? 파일 이름만 다르게 쓰면 로직은 똑같기 때문이다 ^^ 1. 엑셀 데이터 json 변환 코드 [readexcel.js] const express = require('express'); const app = express(); const xlsx = require('xlsx'); const workbook = xlsx.readFile(__dirname + '/work_code.xls'); const js..