안녕하세요!

FE 개발자 유진주입니다.

Language 11

백준 10610번(Java)

10610번: 30 (acmicpc.net) 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net - 접근했던 방식 처음에는 while문으로 입력받은 int형의 n을 숫자 하나씩 num 배열에 저장한 후, 내림차순 정렬로 정렬해 마지막 원소가 0인지, 그리고 원소의 합(sum)이 3의 배수인지 이 두 가지 조건에 모두 만족하는지를 확인한 후 배열의 원소를 순서대로 출력하고자 하였다. - 문제점1 : 내림차순 정렬 접근 방법은 맞는 것 같지만, 크나큰 문제가 있었다. 우선, 위의 방법으로 시도했을 때에 내림차순 정렬에서..

Language/JAVA 2023.08.11

백준 1010번 다리(Java)

1010번: 다리 놓기 (acmicpc.net) 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 1. 분수의 경우, 분모 분자 따로 계산하기 우선 처음에, 분모 분자를 따로 계산하지 않고, 하나의 result라는 변수에서 조합을 계산하려고 한 점에 문제가 있었다. 분자에 해당하는 숫자를 차례로 곱하고(8*7*6..), 이후 분모에 해당하는 숫자를 차례로 나누는(../3/2/1) 방식이었다. 이 방식의 문제는 나머지에 있었다. 차례로 분모에 해당하는 숫자를 나누는 과정에서 약분이 되지 않는다면, 정수로 값이 떨..

Language/JAVA 2023.06.30

백준 1058번 친구(Java)

1058번: 친구 (acmicpc.net) 1058번: 친구 지민이는 세계에서 가장 유명한 사람이 누구인지 궁금해졌다. 가장 유명한 사람을 구하는 방법은 각 사람의 2-친구를 구하면 된다. 어떤 사람 A가 또다른 사람 B의 2-친구가 되기 위해선, 두 사람 www.acmicpc.net 1. 여러 줄의 문자열을 Scanner로 입력 받아 split 해서 문자 하나씩 배열에 저장하는 부분 int n, i, j; String tmp; String [] arr=new String[50]; String [][] f=new String [50][50]; String [][] r=new String [50][50]; Scanner sc=new Scanner(System.in); n=sc.nextInt(); sc.ne..

Language/JAVA 2023.05.25

[자바의 정석] Chapter 5. 배열

배열이란? : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 int [] score = new int[5]; ✨ 각 저장공간에 모두 이름을 붙이는 대신에 참조변수의 이름을 붙이고, 참조변수를 통해서 이 공간을 다루게 됨. (자동적으로 인덱스 순서에 따라 이름이 만들어지기 때문에, 우리가 변수처럼 일일이 각 저장공간의 이름을 붙일 필요 X) 1) 같은 타입 2) 연속적 배열의 선언과 생성 배열 선언과 변수 선언은 차이 有 -> 변수는 선언하는 순간 저장공간 만들어짐, 배열의 선언은 실제 배열의 저장공간들이 만들어지는 것이 아닌, 배열을 다루기 위한 참조 변수가 만들어지는 것. 선언방법 선언 예 타입[] 변수이름; // Java 스타일 int[] score; String[] name; 타입 변수이름[]..

Language/JAVA 2023.05.10

[자바의 정석] Chapter4. 조건문과 반복문

조건문 : 조건을 만족할 때만 {}를 수행 (0~1번) if (조건식) { // 조건식이 참(true)일 때 수행될 문장들을 적는다. } if (조건식1) { // 조건식1의 연산결과가 참일 때 수행될 문장들을 적는다. }else if (조건식2) { // 조건식2의 연산결과가 참일 때 수행될 문장들을 적는다. }else if (조건식3) { // 조건식3의 연산결과가 참일 때 수행될 문장들을 적는다. }else { // 마지막은 보통 else 블럭으로 끝나며, else 블럭은 생략가능하다! // 위의 어느 조건식도 만족하지 않을 때 수행될 문장들을 적는다. } 🎈if-else들 여러 개 중의 하나 ✨ 자주 쓰이는 조건식의 다양한 예 조건식 조건식이 참일 조건 90

Language/JAVA 2023.05.05

[자바의 정석] Chapter3 연산자(Operation)

연산자와 피연산자 - 연산자: 연산을 수해하는 기호 +, -, *, / - 피연산자: 연산자의 연산 수행 대상 "모든 연산자는 연산결과를 반환한다." 연산자의 종류 종류 연산자 설명 산술 연산자 + - * / % > 사칙 연산과 나머지 연산(%) 비교 연산자 > = 대입과 단항 연산자를 제외하면, 모두 왼쪽 -> 오른쪽 종류 결합규칙 연산자 우선순위 단항 연산자 ← ++ -- + - ~ ! (type) 높음 낮음 산술 연산자 → * / % → + - → 비교 연산자 → = instanceof → == != 논리 연산자 → & → ^ → | → && → || 삼항 연산자 → ?: 대입 연산자 ← == += -= *= /= %= = &= ^= != ✨이 세 가지만 기억하자! 1) 산술 > 비교 > 논리 > ..

Language/JAVA 2023.05.04

[자바의 정석] Chapter2. 단축키/변수/상수/리터럴/문자열/기본형과 참조형/printf

이클립스(Eclipse) 단축키 public class Ex2_1 { public static void main(String[] args) { System.out.println("Hello"); //sysout(sop) ctrl+space 자동완성 System.out.println("Hello"); //ctrl+alt+↓ 행단위 복사하기 System.out.println("Hello"); //ali+shift+A 컬럼 편집 모드(토글) System.out.println("Hello"); //println() - 출력 후에 출바꿈 함 System.out.print("Hello"); //print() - 출력 후에 줄바꿈 안 함 // System.out.print("Hello"); //ctrl+/ 행 주석처..

Language/JAVA 2023.04.06

자바의 정석 Chapter1

◆ 자바(Java): 실행환경(JRE)+개발도구(JDK)+라이브러리(API) * 라이브러리: 프로그램에 필요한 기능들을 미리 만들어 둔 것. (라이브러리와 프레임워크 차이: 노마드 코더 영상 참고) PC(인텔리제이, 이클립스) / 웹(스프링 프레임워크 사용) / 모바일(안드로이드) 애플리케이션 / 빅데이터 / 게임, 과학, 소형기기 등에 사용 Java8을 배워도 상관없다. 현재 실무에서는 이전 버전을 쓰는 곳들도 많음. (안정성의 이유로) 이후 버전은 최신 기능이 추가되어 있는 것. ◆ 자바의 특징 - 배우기 쉬운 객체지향 언어 - 자동 메모리 관리 - 멀티 쓰레드 지원 - 풍부한 라이브러리로 쉽게 개발가능 - 운영체제에 독립적 ◆ Java API 문서: 자바로 프로그램을 만드는데 필요한 주요 기능을 미..

Language/JAVA 2023.02.24

백준 11047번 동전 0 (Python)

11047번: 동전 0 (acmicpc.net) 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 첫 번째 문제점: 반복문 작동 오류 계속해서 k값이 변화없이, count 값도 초기값 0 그대로 출력되는 결과 발생. 찾아보니, for문의 range 범위 설정에 문제가 있었다! 아래는 코딩도장의 for와 range의 제대로 된 문법을 찾아왔다. COS Pro 2급 파이썬: 15.4 숫자를 감소시키기 (dojang.io) 즉, range의 기본 설정은 ..

Language/Python 2023.01.24

백준 2751번 수 정렬하기 2 & 10909번 수 정렬하기 3 (Python)

2751번: 수 정렬하기 2 (acmicpc.net) 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net n=int(input()) l=[] for i in range(n): k=int(input()) l.append(k) l.sort() #기본 정렬함수로 리스트 오름차순 정렬 for i in l: print(i) #리스트(l) 원소 출력 결과는 시간 초과... 교재를 보면서 시간복잡도 계산을 해보았다. 우선 Python은 C보다 연산 속도가 느리다..! (파이썬으로 백준 문제를 처음 풀어봤는데 채점 ..

Language/Python 2023.01.20