반응형

분류 전체보기 141

[백준] 1676. 팩토리얼 0의 개수

문제 https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 일반적인 팩토리얼 구현 및 String 파싱 문제지만 N의 범위가 500까지다. 수가 매우 커질 수 있기 때문에 자료형에 대한 고려가 필요하다. 전략 01. 일반적인 풀이 N에 해당하는 팩토리얼을 구한 뒤 10으로 나눈 나머지가 0이 아닐 때까지 카운트하기 풀이 Java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInte..

[백준] 1541. 잃어버린 괄호

문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 값을 최소로 만들기 위해 괄호를 어떻게 쳐야 되는지 구하는 문제. 빼기(-)를 기준으로 수들을 나눈 뒤 각각 더해서 빼주면 되는 문제다. 전략 01. 파싱 계산식을 뭐 어떻게 하라. 이런 문제는 보통 파싱만 잘해도 풀린다. 괄호를 쳐서 최소값을 구해야 하므로 - 로 묶을 수 있는 묶음을 최대한 크게 해야 한다. 따라서 -에서 다음 -가 나올 때까지의 모든 수를 묶어서 괄호를 치면 그 수..

[Java] Java기초 - (3) 배열

같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 배열이라고 한다. 파이썬은 동적 배열인 list를 사용해서 다른 타입의 요소들을 저장할 수 있지만, 자바에서의 배열의 요소들은 모두 같은 타입이어야만 한다. 01. 배열 1. 배열의 선언과 생성 // Case 1 int[] arr; arr = new int[3]; // Case 2 int[] arr = new int[3]; // Case 3 int arr[] = new int[3]; // Case 4 int[] arr = {1, 2, 3}; 예를 들어 int배열에 대한 선언은 위의 네 가지 경우가 모두 가능하다. Case 1은 첫 줄에서 배열을 선언(배열을 다루는 참조변수 선언)하고 두번째 줄에서 배열을 생성(실제 저장공간을 생성)한다. Case 2는..

[Java] Java Build Tools 발전과정 - (3) Gradle

05. Gradle ( 2012 - ) Gradle은 Ant, Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합해 만든 오픈 소스 빌드 도구 프로젝트다. 기존 도구들이 xml과 같은 마크업 언어로 프로젝트를 관리했던 것과는 달리 Groovy기반의 DSL(Domain Specific Language)를 이용해 프로젝트를 관리한다. 최근에는 Kotlin DSL을 사용할 수 있게 되어서 Groovy기반 DSL의 아쉬운 부분(예를 들어 자동 완성 안됨)도 보완되었다. 또한 Gradle Wrapper를 이용해 Gradle이 설치되어 있지 않은 시스템에서도 프로젝트 빌드가 가능하다. 뒤늦게 개발된 빌드 도구라서 그런지 기존 도구를 대체할 많은 장점을 가지고 있다. Maven, Ivy같은 기존 저..

[2] 우테코 과제 제출 및 IntelliJ로 IDE 교체

2023년 10월 25일 (수) 우테코 1주차 과제를 제출했다. 테스트 코드도 전부 통과했고 나름 열심히 코딩해서 이쁘게 제출했다. 과제 소감을 적는 공간이 함께 있어서 주저리주저리 적는 대신 간단하게 과제에 대한 소감만 정리해서 제출했다. 최대 5000자라고 하는데 소감 길이가 길다고 좋은 건 아니라고 생각한다. 이번 과제로 배운 점이 많았다. 과제를 클론하니 우테코에서는 빌드 관리 툴로 Gradle을 사용하는 걸 알았는데, Gradle이 뭔지도 잘 몰라서 어떻게 해야할 지 감도 안 잡혔다. 처음에는 그냥 gradlew로 실행하면 빌드가 된다고 해서 그 기능만 사용해서 과제를 제출했는데 이후 자바의 빌드 관리 툴을 공부하면서 왜 Gradle이 기존 빌드 툴에 비해서 장점이 많은지도 알게 되었고, 어떤 ..

[Java] Java Build Tools 발전과정 - (2) Maven

04. Apache Maven ( 2004 - ) Maven은 "전문가"라는 뜻의 이디시어에서 따온 Ant의 대안 프로젝트다. Maven 프로젝트는 자바 기반 오픈소스들을 모아서 지원하기 위한 아파치의 자카르타 프로젝트 중에서 Servlet기반의 자바 웹 프레임워크인 터빈의 빌드 과정을 단순화하기 위해 시작되었다. 초기 터빈에는 몇 개의 Ant 빌드 파일이 존재했는데, Ant의 빌드 파일에는 어떠한 기준이 없으므로 서로 조금씩 달라서 어려움이 있었다. 따라서 이를 해결하기 위해 어떤 기준, 즉 프로젝트를 빌드하는 방법, 프로젝트 구성에 대한 명확한 정의, 프로젝트 정보를 게시하는 쉬운 방법, 그리고 여러 프로젝트에 걸쳐 jar파일을 공유하는 방법에 대한 기준이 필요했다. 그리고 그 결과가 Maven이다...

[Java] Java Build Tools 발전과정 - (1) Make vs Ant

자바를 빌드할 때 여러 가지 빌드 도구들을 사용할 수 있다. 현재는 Maven과 Gradle을 대표적으로 많이 사용한다. '둘 중 어느 것을 사용하는 것이 좋을까'에 대한 궁금증을 해소하기 위해 Google Trends를 이용해 두 단어의 검색량 추이를 비교해봤다. 절대적인 수치는 아니지만 사람들의 관심도를 통해 간접적으로 위 질문에 대한 해답을 얻을 수 있을 것 같다. 전세계를 상대로 검색량을 조사한 결과 2012년 Gradle 1.0이 발표된 이후 꾸준히 검색량이 증가하다가 현재는 주춤하는 모습이다. 2002년 발표된 Maven도 발표 이후 꾸준히 증가하다가 현재는 어느 정도 Gradle과 비율을 맞추고 있다. 아직까지 전세계에서는 Maven이 Gradle에 비해 3배 정도 관심도가 높은 것으로 보인..

[1] 우테코 프리코스 시작

2023년 10월 19일 (목) 우테코 프리코스가 시작됐다. 2시부터 3시까지 우테코 프리코스 오리엔테이션이 유튜브에서 있어서 틀어놓고 간단한 백준 문제를 풀면서 들었다. 한 1500명 이상의 시청자가 있었다. 같은 목표를 가진 사람 1500명이 모여 있으니 벌써 내적 친밀감이 들었다. OT 내용을 요약하자면 프리코스를 하면서 4주 동안 몰입한 경험이 이전 기수들에게 큰 도움이 됐다는 피드백을 받아, 지원자 전체에게 프리코스를 경험할 수 있도록 선발 절차를 구성했다고 한다. 또, Q&A 중에 답변으로 이번 기수 지원자는 저번 기수보다 약 50% 늘어난 4500명이라고 한다. 이 중 150명, 그 중에 백엔드는 100명 내외로 선발된다고 하니 나태해지지 말고 열심히 해야겠다. OT가 끝난 직후 미션 메일이..

[Java] Java기초 - (2) 기초 문법 - 연산자

연산자도 마찬가지로 파이썬과의 차이점에 주안점을 두어 살펴본다. 파이썬 말고 다른 언어에는 대부분 있는 증감 연산자가 자바에는 있고, 자료형이 있으므로 연산 시 형변환이 중요하게 여겨진다는 게 큰 차이점이다. 01. 연산자 자바의 연산자는 위 그림에 나와 있는 연산자가 전부다. 대부분 타 언어와 비슷한 부분이 많지만, 세부적으로 들어가면 조금 복잡해질 수 있다. 예를 들어 연산 시 피연산자에 (byte) a > b와 같이 형변환 연산자가 붙어 있는 경우, 결과가 어떻게 처리되는가와 같은 문제에 봉착할 수 있으니 차근차근 알아보자. 1. 산술 > 비교 > 논리 > 대입. 대입은 제일 마지막에 수행된다. 2. 단항 > 이항 > 삼항. 단항 연산자의 우선순위가 이항 연산자보다 높다. 3. 단항 연산자와 대입 ..

[Java] Java기초 - (2) 기초 문법 - 변수와 리터럴

파이썬에 대해 어느 정도 알고 있는 상태이므로 이를 확장해서 자바의 기초 문법을 정리해보고자 한다. 우선 생각보다 전반적으로 엄청 다른 부분은 없었다. 둘 다 각 언어만의 가상 머신을 이용해 프로그램을 실행한다거나, 프로그래밍 언어가 으레 그렇듯 배열, 조건문, 반복문 등의 문법이 있고 구문도 거의 비슷하다 (자바스크립트랑 더 비슷하긴 함). 또한 둘 다 객체 지향 언어라는 점 또한 비슷하고 중요하다. 다만 파이썬은 코드를 한 줄씩 읽어서 실행하는 인터프리터 언어, 자바는 전체 코드를 바이트 코드로 컴파일한 뒤 JVM으로 실행하는 컴파일 언어라는 점이나 자바는 C/C++계열 언어처럼 변수 자료형이 존재한다는 점 등이 주요한 차이점이다. 01. 변수 (Variable) 자바는 변수 타입이 존재한다. 파이썬..

반응형