본문 바로가기
728x90
반응형

분류 전체보기510

[자바(Java) 공부하기] 12. 클래스 - 우당탕탕 개발자 되기 프로젝트 클래스를 알아보기 전에 객체에 대해 먼저 알아보겠습니다. 객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별이 가능한 것을 말합니다. 객체는 속성과 동작(기능)으로 구성되어 있는데, 이 속성과 동작을 Java에서는 각각 필드(field)와 메서드(method)라고 합니다. 객체들은 각각 독립적으로 존재하며, 다른 객체와 서로 상호작용하면서 동작합니다. 객체들 사이의 상호작용 수단이 메서드이고, 이때 객체가 다른 객체의 기능을 이용하는 것이 메서드 호출입니다. 객체는 설계도를 바탕으로 만들어지는데, Java에서 이 설계도를 클래스(Class)라고 합니다. 클래스에는 객체를 생성하기 위한 필드와 메서드가 정의되어 있습니다. 클래스로부터 만들어진 객체를 해당 .. 2023. 7. 12.
[백준] 9095번 : 1, 2, 3 더하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 이전의 결과를 활용하여 해결하는 다이내믹 프로그래밍 문제이다. 여기서 이전 수의 1, 2, 3 조합의 경우에 모두 1을 추가하고 2와 3으로만 구성된 조합을 찾아 추가하면 다음 수의 1, 2, 3 조합의 경우가 도출된다. 해당 방법으로 1부터 입력받은 숫자까지 경우의 수를 구하고 입력받은 숫자의 각 경우의 순열 결과를 팩토리얼 함수로 구하면 해결할 수 있다. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 전체 테스트 케이스 횟수를 입력받는다. T = int(sy.. 2023. 7. 12.
[백준] 2178번 : 미로 탐색 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 알고리즘 분류에 그래프 탐색과 너비 우선 탐색이 있길래 2차원 그래프를 만들고 너비 우선 탐색으로 해결해보려고 했으나 쉽지 않았다. 끊임없는 고민을 하던 중 시간이 초과되더라도 모든 경우의 수를 생각해 보기로 했다. 하여 각 자리마다 상, 하, 좌, 우로 이동할 수 있는 경우를 생각해 보았다. 모든 경우를 생각하던 중 다음 위치로 이동하기 위해서 최소 얼마의 이동이 있었는지 기억해 두면 마지막 칸까지 모든 경우의 수를 확인했을 때 최소한의 이동 거리를 구할 수 있.. 2023. 7. 11.
[백준] 1085번 : 직사각형에서 탈출 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 1. 문제 설명 2. 풀이과정 현재 위치 좌표와 직사각형의 오른쪽 위 꼭짓점 좌표를 입력받는다. x, y, w, h = map(int, sys.stdin.readline().split()) 현재 위치에서 직사각형 경계선까지의 가로와 세로 거리를 저장한다. length = x width = y 만약 현재 위치에서 직사각형 경계선까지 오른쪽 가로 거리가 더 짧으면 if (x > w - x) 직사각형 경계선까지의 가로 거리를 오른쪽 가로 거리로 수.. 2023. 7. 11.
[백준] 2441번 : 별 찍기 - 4 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2441번: 별 찍기 - 4 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net 1. 문제 설명 2. 풀이과정 중첩 반복문을 연습해 보는 문제라고 할 수 있겠습니다. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러옵니다. import sys 총 별을 찍을 줄 수를 입력받습니다. N = int(sys.stdin.readline()) 입력받은 수부터 1까지 각 줄마다 별의 개수를 찍어줘야 하므로 거꾸로 반복문을 실행합니다. for i in range(N, 0, -1) 별을 오른쪽 기준으로 정렬하여 찍어줘야 하므로 공백을 먼저 출력해 준다. 공백.. 2023. 7. 11.
[자바(Java) 공부하기] 11. 메서드 - 우당탕탕 개발자 되기 프로젝트 메서드는 동작(기능)에 해당하는 중괄호 { } 블록을 말합니다. 메서드는 선언부와 실행 블록으로 구성되어 있습니다. 지금까지 늘 기본으로 사용해 왔던 main() 함수도 사실은 메서드입니다. 여러 메서드를 선언하고 사용할 때는 모두 main 메서드에서 호출하여 사용하게 됩니다. 메서드의 선언부는 리턴 타입 메서드 이름(매개변수 선언 ...) 형식으로 구성됩니다. 리턴 타입은 메서드가 리턴하는 결과의 타입을 나타냅니다. 메서드 이름은 메서드의 기능이 나타나도록 식별자 규칙에 맞게 작성해 줍니다. 매개변수 선언은 메서드를 호출하여 실행할 때 필요한 데이터를 받기 위한 변수를 의미합니다. 메서드에서 리턴 타입은 메서드에서 리턴해주는 값의 타입을 나타낸다고 했는데, 리턴 값이란 메서드를 실행한 후의 결괏값을 말.. 2023. 7. 11.
[자바(Java) 공부하기] 10. 배열 - 우당탕탕 개발자 되기 프로젝트 배열이란 같은 타입의 데이터를 연속된 공간에 나열하고, 각 데이터의 인덱스(index)를 부여해 놓은 자료구조를 말합니다. 배열의 각 인덱스는 각 항목의 데이터를 읽거나 저장하는 데 사용되며, 배열 이름 옆에 대괄호 [ ]에 작성됩니다. 인덱스는 0부터 시작합니다. 배열 변수는 스택 영역에 생성되지만, 실제 배열의 값들은 힙 영역에 생성됩니다. 따라서 배열 변수에는 배열의 힙 영역의 주소가 저장되게 됩니다. 배열을 사용하기 위해서는 배열 변수를 선언해줘야 합니다. 배열 변수 선언은 두 가지 방식으로 작성될 수 있는데, 자료형[] 변수명 형식으로 작성될 수 있고, 자료형 변수명[] 형식으로 작성될 수 있습니다. 배열 변수는 힙 영역의 배열 실제 값을 참조하게 되는데, 만약 참조할 배열의 실제 값이 없다면 .. 2023. 7. 10.
[프로그래머스] 구명보트 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 리스트의 형태로 해결하려고 하였지만 리스트는 연산 속도가 느려 자꾸 시간초과가 생겼다. 하여 deque의 형태로 해결하였다. 이 문제는 구명보트에 최대 2명까지 태울 수 있으므로 가장 가벼운 사람과 가장 무거운 사람을 태웠을 때 무게 제한을 넘지 않으면 2명을 태우고 무게 제한을 넘는다면 가장 무거운 사람은 혼자 타고 가는 방식으로 해결한다. deque을 사용하기 위해 collections 모듈에서 deque을 불러온다. from collections import deque 입력.. 2023. 7. 10.
[프로그래머스] 두 개 뽑아서 더하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 각 수를 두 개씩 선택하여 모두 더해보고 해당 값이 리스트에 없으면 새로 저장하는 방식으로 해결하였다. 리스트에서 두 개씩 수를 선택한다. for i in range(len(numbers) - 1): for j in range(i + 1, len(numbers)) 만약 선택한 두 수를 더한 값이 정답 리스트에 없으면 if ((numbers[i] + numbers[j]) not in answer) 정답 리스트에 두 수의 합을 추가한다. answer.append(numbers[i] .. 2023. 7. 10.
[프로그래머스] 예상 대진표 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 풀이과정 해당 문제는 전체 참가자를 두 부분으로 나누고 두 참가자의 위치가 서로 분리되어 있으면 결과를 도출하는 방식으로 해결했습니다. 정답이 도출되어 반환되기 전까지 계속 반복합니다. while (True) 가운데 지점을 정합니다. center = n // 2 만약 두 참가자가 같은 부분에 있는데 중앙보다 큰 쪽에 있다면 if (a > center) and (b > center) 참가자의 번호를 다시 1부터 나열되도록 맞추기 위해 각 참가자의 번호에서 중앙의 값을 빼준 값으로 새로 저장.. 2023. 7. 10.
728x90
반응형