반응형

Java에서 String형 문자열을 배열로 변환하는 방법은 다양한 방법이 있지만, 가장 간단하고 일반적인 방법은 toCharArray() 메서드를 사용하는 것입니다. 이 메서드는 String 객체를 char 배열로 변환하여 반환합니다.

 

1. String.toCharArray() 메서드 사용하기

String str = "Hello, World!";
char[] charArray = str.toCharArray();

 

위의 예제에서는 String 클래스의 toCharArray() 메서드를 사용하여 String 객체 str을 char 배열 charArray로 변환합니다. 이렇게 하면 charArray에는 str의 모든 문자가 저장됩니다.

 

또 다른 방법은 String 객체를 한 문자씩 분리하여 char 배열에 저장하는 것입니다. 이 방법은 charAt() 메서드를 사용하여 String 객체의 각 문자를 가져와서 char 배열에 할당합니다. 다음은 이 방법의 예제입니다.

 

2. String의 charAt() 메서드를 사용하여 각 문자를 배열로 복사하기

String str = "Hello, World!";
char[] charArray = new char[str.length()];
for (int i = 0; i < str.length(); i++) {
    charArray[i] = str.charAt(i);
}

 

두 가지 방법 모두 String 객체를 char 형식의 배열로 변환할 수 있습니다. 둘 중 어느 방법을 사용하든, 반환된 char 배열은 각 문자열의 문자를 갖습니다.

 

3. String 변수를 String 배열로 만들기

String str = "Hello, World!";
String[] strArray = new String[str.length()];
for (int i = 0; i < str.length(); i++) {
    strArray[i] = Character.toString(str.charAt(i));
}

 

이 코드에서는 String 객체 str의 길이를 사용하여 char 배열 charArray를 만들고, for 루프를 사용하여 str의 각 문자를 가져와서 해당 char 값을 charArray 배열에 할당합니다.

 

이 방법의 장점은 charAt() 메서드를 사용하여 String 객체의 각 문자에 대한 제어를 제공하는 것입니다. 예를 들어, charAt() 메서드를 사용하여 String 객체에서 특정 위치의 문자를 가져오거나, 문자열을 반전시키거나, 문자열의 일부를 추출할 수 있습니다. 이러한 기능을 사용하여 문자열을 조작하고 char 배열로 변환할 수 있습니다.

 

그러나 charAt() 메서드를 반복적으로 호출하면 성능 저하가 발생할 수 있습니다. 따라서 문자열이 매우 크거나 빠른 실행이 필요한 경우 toCharArray() 메서드를 사용하는 것이 좋습니다.

 

이렇게 해서, 자바 String형 문자를 배열로 변환할 수 있습니다.

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


날짜 계산 성공분류

시간 제한메모리 제한제출정답맞은 사람정답 비율

2 초 4 MB 17383 11361 9241 67.207%

문제

준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다.

지구를 나타내는 수를 E, 태양을 나타내는 수를 S, 달을 나타내는 수를 M이라고 했을 때, 이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19)

우리가 알고있는 1년은 준규가 살고있는 나라에서는 1 1 1로 나타낼 수 있다. 1년이 지날 때마다, 세 수는 모두 1씩 증가한다. 만약, 어떤 수가 범위를 넘어가는 경우에는 1이 된다.

예를 들어, 15년은 15 15 15로 나타낼 수 있다. 하지만, 1년이 지나서 16년이 되면 16 16 16이 아니라 1 16 16이 된다. 이유는 1 ≤ E ≤ 15 라서 범위를 넘어가기 때문이다.

E, S, M이 주어졌고, 1년이 준규가 사는 나라에서 1 1 1일때, 준규가 사는 나라에서 E S M이 우리가 알고 있는 연도로 몇 년인지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 세 수 E, S, M이 주어진다. 문제에 나와있는 범위를 지키는 입력만 주어진다.

출력

첫째 줄에 E S M으로 표시되는 가장 빠른 연도를 출력한다. 1 1 1은 항상 1이기 때문에, 정답이 음수가 나오는 경우는 없다.


E, S, M = map(int, input().split())

Y = 1

while True :
    if (Y-E) % 15 == 0 and (Y-S) % 28 == 0 and (Y-M) % 19 == 0 :
        print(Y)
        break
    Y += 1

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


스튜던트의 t 분포(t-distribution)

t 분포(t-distribution)는 정규분포와 생김새가 비슷하지만, 꼬리 부분이 약간 더 뚜겁고 길며, 표본통계량의 분포를 설명하는데 광범위하게 사용된다. 표본이 클수록 더 정규분포를 닮은 t 분포(t-distribution)가 형성된다.

 

t 분포(t-distribution)는 종모양으로 t = 0 에서 좌우대칭을 이루는 그래프다. t 분포(t-distribution)의 모양을 결정하는 것은 자유도이며, 자유도가 커질수록 표준정규분포에 가깝게 된다.

 

t 분포(t-distribution)는 평균 검정을 하기 위해 고안된 분포이며, 표본 수가 적을 때 신뢰성을 더해준다.

 

t 분포(t-distribution)에서 표본이 적을수록 표준정규분포보다 양쪽 꼬리가 더 두꺼우며, 표본이 클수록 표준정규분포의 모양을 따른다.

 

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


부트스트랩(Bootstrap)이란?

현재 있는 표본에서 추가적으로 표본을 복원추출하고 각 표본에 대한 통계량과 모델을 다시 계산하는 것이며, 데이터나 표본통계량이 정규분포를 따라야 한다는 가정은 꼭 필요하지 않다. 즉, 원래 표본을 수천, 수백만 번 복제하는 것이라고 할 수 있다. 이를 통해 원래 표본으로부터 얻어지는 모든 정보를 포함하는 가상 모집단을 얻을 수 있다.

 

부트스트랩(Bootstrap)은 표본통계량의 변동성을 평가하는 강력한 도구이다.

 

 

부트스트랩 재표본추출 알고리즘

1. 샘플 값을 하나 뽑아서 기록하고 제자리에 놓는다.

2. n번 반복한다.

3. 재표본추출된 값의 평균을 기록한다.

4. 1~3단계를 R번 반복한다.

5. R개의 결과를 사용하여 표준편차, 히스토그램, 신뢰구간 등을 찾는다.


배깅(Bagging)이란?

배깅(Bagging)은 앙상블 기법의 종류 중 하나이며, 부트스트랩(Bootstrap) 데이터를 가지고 모델을 돌려 모델 파라미터의 안정성(변동성)을 추정하거나 예측력을 높일 수 있다. 이를 활용하여 분류 및 의사 결정 트리를 사용할 때, 여러 부트스트랩(Bootstrap) 샘플을 가지고 트리를 여러 개 만들어 각 트리에서 나온 예측값을 평균 내는 것이 단일 트리를 사용하는 것보다 효과적인데, 이 방법을 배깅(Bagging)이라고 한다.

 

배깅(Bagging) 기법을 활용한 모델이 우리가 흔히 사용하는 랜덤 포레스트 모델(Random Forest Model)이다.

 

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


복원추출(Sampling with replacement)

추첨 후, 다음번에도 중복 추출이 가능하도록 한 번 뽑은 표본을 모집단에 다시 넣고 다른 표본을 추출하는 방법.

즉, 같은 표본이 중복해서 추출될 수 있다.

 

복원추출인 경우 표본평균의 평균과 분산은 아래와 같다.

 

평균 = 모평균

분산 = 모분산 / N


비복원추출(Sampling without replacement)

추첨 후, 한번 뽑힌 표본은 다시 뽑히지 않도록 모집단에 넣지 않고 다른 표본을 추출하는 방법.

즉, 한번 추출된 표본은 다시 추출되지 않는다.


예를 들어, 숫자 카드 1, 2, 3이 있다. 숫자 카드를 뽑는 방법은 아래와 같다.

복원추출(Sampling with replacement)

-> (1,2), (1,3), (2,3) 으로 총 3개로 1/3의 확률을 가지고 있다.

 

비복원추출(Sampling without replacement)

-> (1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), (3,3) 으로 총 9개로 1/9의 확률을 가지고 있다.

 

위의 예시와 같이, 복원추출(Sampling with replacement)과 비복원추출(Sampling without replacement)은 모집단의 모든 원소가 표본으로 추출될 확률이 동일한 확률추출법이다.


샘플링 기반의 추정이나 모델링에서 데이터의 품질은 데이터의 양보다 더 중요하다. 그렇기에, 복원추출(Sampling with replacement)과 비복원추출(Sampling without replacement)의 선택에 따라 결과가 달라진다.

 

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


지능형 기차 성공출처분류

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 128 MB 14864 10749 9609 77.567%

문제

최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 단, 이 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다.

 내린 사람 수탄 사람 수1번역(출발역)2번역3번역4번역(종착역)

0 32
3 13
28 25
39 0

예를 들어, 위와 같은 경우를 살펴보자. 이 경우, 기차 안에 사람이 가장 많은 때는 2번역에서 3명의 사람이 기차에서 내리고, 13명의 사람이 기차에 탔을 때로, 총 42명의 사람이 기차 안에 있다.

이 기차는 다음 조건을 만족하면서 운행된다고 가정한다.

  1. 기차는 역 번호 순서대로 운행한다.
  2. 출발역에서 내린 사람 수와 종착역에서 탄 사람 수는 0이다.
  3. 각 역에서 현재 기차에 있는 사람보다 더 많은 사람이 내리는 경우는 없다.
  4. 기차의 정원은 최대 10,000명이고, 정원을 초과하여 타는 경우는 없다.

4개의 역에 대해 기차에서 내린 사람 수와 탄 사람 수가 주어졌을 때, 기차에 사람이 가장 많을 때의 사람 수를 계산하는 프로그램을 작성하시오.

입력

각 역에서 내린 사람 수와 탄 사람 수가 빈칸을 사이에 두고 첫째 줄부터 넷째 줄까지 역 순서대로 한 줄에 하나씩 주어진다. 

출력

첫째 줄에 최대 사람 수를 출력한다.  


A = []
people_result = 0
for _ in range(4) : 
    Out_people, In_people = map(int, input().split())
    people_result += In_people
    people_result -= Out_people
    
    A.append(people_result)

print(max(A))

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


ACM 호텔 성공출처다국어분류

한국어   

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 256 MB 47495 16776 14461 34.982%

문제

ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다.

문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모든 인접한 두 방 사이의 거리는 같은 거리(거리 1)라고 가정하고 호텔의 정면 쪽에만 방이 있다고 가정한다.

그림 1. H = 6 이고 W = 12 인 H × W 호텔을 간략하게 나타낸 그림

방 번호는 YXX 나 YYXX 형태인데 여기서 Y 나 YY 는 층 수를 나타내고 XX 는 엘리베이터에서부터 세었을 때의 번호를 나타낸다. 즉, 그림 1 에서 빗금으로 표시한 방은 305 호가 된다.

손님은 엘리베이터를 타고 이동하는 거리는 신경 쓰지 않는다. 다만 걷는 거리가 같을 때에는 아래층의 방을 더 선호한다. 예를 들면 102 호 방보다는 301 호 방을 더 선호하는데, 102 호는 거리 2 만큼 걸어야 하지만 301 호는 거리 1 만큼만 걸으면 되기 때문이다. 같은 이유로 102 호보다 2101 호를 더 선호한다.

여러분이 작성할 프로그램은 초기에 모든 방이 비어있다고 가정하에 이 정책에 따라 N 번째로 도착한 손님에게 배정될 방 번호를 계산하는 프로그램이다. 첫 번째 손님은 101 호, 두 번째 손님은 201 호 등과 같이 배정한다. 그림 1 의 경우를 예로 들면, H = 6이므로 10 번째 손님은 402 호에 배정해야 한다.

입력

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수를 포함하고 있으며 각각 호텔의 층 수, 각 층의 방 수, 몇 번째 손님인지를 나타낸다(1 ≤ H, W ≤ 99, 1 ≤ N ≤ H × W). 

출력

프로그램은 표준 출력에 출력한다. 각 테스트 데이터마다 정확히 한 행을 출력하는데, 내용은 N 번째 손님에게 배정되어야 하는 방 번호를 출력한다.


T = int(input())
for i in range(T) :
    H, W, N = map(int, input().split())
    A = N % H;
    B = N // H+1
    
    if A == 0 : A = H; B -= 1
    print(A*100 + B)
for _ in range(int(input())) :
    H, W, N = map(int, input().split())
    A = N % H;
    B = N // H+1
    
    if A == 0 : A = H; B -= 1
    print(A*100 + B)

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


피보나치 수 성공분류

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 (추가 시간 없음) 128 MB 37235 17065 13953 47.503%

문제

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다.

n=17일때 까지 피보나치 수를 써보면 다음과 같다.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597

n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 n이 주어진다. n은 45보다 작거나 같은 자연수이다.

출력

첫째 줄에 n번째 피보나치 수를 출력한다.


N = int(input())

A = [0 for i in range(N+2)]
A[1] = 1

for N in range(2, N+2) :
    A[N] = A[N-1] + A[N-2]
print(A[N-1])

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


피보나치 수 2 다국어분류

한국어   

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 128 MB 46976 17942 15118 38.476%

문제

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된다.

n=17일때 까지 피보나치 수를 써보면 다음과 같다.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597

n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 n이 주어진다. n은 90보다 작거나 같은 자연수이다.

출력

첫째 줄에 n번째 피보나치 수를 출력한다.


N = int(input())
A = [i for i in range(N+1)]
A[1] = 1

for i in range(2, N+1) :
    A[i] = A[i-1] + A[i-2]
    
print(A[-1])

 

반응형
반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


0 = not cute / 1 = cute 성공출처분류

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 2 MB 8937 5919 5487 67.516%

문제

준희는 자기가 팀에서 귀여움을 담당하고 있다고 생각한다. 하지만 연수가 볼 때 그 의견은 뭔가 좀 잘못된 것 같았다. 그렇기에 설문조사를 하여 준희가 귀여운지 아닌지 알아보기로 했다.

입력

첫 번째 줄에 설문조사를 한 사람의 수 N (1 ≤ N ≤ 101, N은 홀수)가 주어진다.

다음 N개의 줄에는 각 줄마다 각 사람이 설문 조사에 어떤 의견을 표명했는지를 나타내는 정수가 주어진다. 0은 준희가 귀엽지 않다고 했다는 뜻이고, 1은 준희가 귀엽다고 했다는 뜻이다.

출력

준희가 귀엽지 않다는 의견이 더 많을 경우 "Junhee is not cute!"를 출력하고 귀엽다는 의견이 많을 경우 "Junhee is cute!"를 출력하라.


N = int(input())

A = []
for i in range(N) : 
    A.append(int(input()))

one_count = A.count(1)
zero_count = A.count(0)

if one_count > zero_count :
    print("Junhee is cute!")
else :
    print("Junhee is not cute!")

 

반응형

+ Recent posts