본문 바로가기

SWEA

(48)
[SWEA 1983][D2][JAVA] 조교의 성적 매기기 [문제] https://swexpertacademy.com/main/code/problem/problemSolver.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! www.swexpertacademy.com [풀이방법] 중간(35%) / 기말(45%) / 과제 (20%) 비율을 계산해서 계산 결과를 Double 형 변수에 저장합니다. 학점을 알고 싶은 학생의 번호를 찾아가는 것이기 때문에 본래 받은 순서(출석 번호라고 간주)를 유지할 필요가 있습니다. 하지만 소팅을 해야 학점을 매길 수 있기 때문에 여기서 hashmap을 사용했습니다. HashMap 을 사용해서 학생의 번호와 계산한 결과값을 넣은 후 스태틱 메소드를 사용해서 소트해줍니다. ..
[SWEA 1859][D2][JAVA] 백만장자 프로젝트 [문제] https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LrsUaDxcDFAXc&categoryId=AV5LrsUaDxcDFAXc&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! www.swexpertacademy.com [풀이방법] 처음에는 DP 푸는 방식처럼 [현재까지 계산한 이득 비용, 현재 가격 * 물건의 개수 - 이전 비용들의 합] 에서 큰 값을 계산해서 DP 배열에 저장한 후에 개 중 가장 큰 값을 구하려고 했더니 세번째 테스트 케이스가 맞지 않아 다시 생각해야 했습니다. 3 5 9 -> 이 경우에는 첫째 날..
[SWEA 1986][D2][JAVA] 지그재그 숫자 [문제] 1부터 N까지의 숫자에서 홀수는 더하고 짝수는 뺐을 때 최종 누적된 값을 구해보자. [풀이방법] mod 연산을 이용하여 홀수/짝수를 판단한 후에 연산을 진행하면 됩니다. for (int k = 0; k
[SWEA 1989][D2][JAVA] 초심자의 회문검사 [문제] "level" 과 같이 거꾸로 읽어도 제대로 읽은 것과 같은 문장이나 낱말을 회문(回文, palindrome)이라 한다. 단어를 입력 받아 회문이면 1을 출력하고, 아니라면 0을 출력하는 프로그램을 작성하라. [풀이방법] 문자열의 길이 중간 (N/2)에서부터 한칸씩 앞뒤로 전진하며 동일한지 아닌지 판단하면 됩니다. for (int k = 0; k
[SWEA 2005][D2][JAVA] 파스칼의 삼각형 [문제] 크기가 N인 파스칼의 삼각형을 만들어야 한다. 파스칼의 삼각형이란 아래와 같은 규칙을 따른다. 1. 첫 번째 줄은 항상 숫자 1이다. 2. 두 번째 줄부터 각 숫자들은 자신의 왼쪽과 오른쪽 위의 숫자의 합으로 구성된다. [풀이방법] (0,0) (1,0) (1,1) (2,0) (2,1) (2,2) (3,0) (3,1) (3,2) (3,3) (0,0)을 기준으로 왼쪽은 x좌표만 1씩 증가하는 좌표와, 오른쪽은 x와 y가 동일한 좌표는 모두 1입니다. 이 특징을 이용해서 (i, j)라고 한다면 j == 0 일 때 (i+1, j)는 1 i == j 일 때 (i+1, j+1)은 1 그 외에는 (i, j) 는 (i-1, j-1) + (i-1, j)의 합 for (int i = 0; i
[SWEA 2001][D2][JAVA] 파리퇴치 [문제] N x N 배열 안의 숫자는 해당 영역에 존재하는 파리의 개수를 의미한다. M x M 크기의 파리채를 한 번 내리쳐 최대한 많은 파리를 죽이고자 한다. 죽은 파리의 개수를 구하라! [풀이방법] M*M크기의 파리채 만큼의 칸에 적힌 최대값을 구하는 문제입니다. 가장 직관적으로 접근하는 방법은 현재 있는 칸을 기준으로 M만큼 순차적으로 증가시킨 칸에 적힌 수를 더하는 것입니다. 더한 결과 중 최대값을 구하면 죽은 파리의 최대 개수를 구할 수 있습니다. for (int i = 0; i
[SWEA 2007][D2][JAVA] 패턴 마디의 길이 [문제] 패턴에서 반복되는 부분을 마디라고 부른다. 문자열을 입력 받아 마디의 길이를 출력하는 프로그램을 작성하라. [풀이방법] 비교 문자 (j)를 0번째 인덱스로 두고 i번째 문자가 j와 일치할 때 j를 증가시킵니다. 만일 일치하지 않다면 j는 0을 유지합니다. (i번째 문자는 계속 0번째 j와 비교하게 됨) 0번째 문자와 일치하는 문자가 나온다면 그게 바로 다음 패턴마디의 시작 인덱스가 됩니다. for (int k = 0; k
[SWEA][D2][JAVA] 간단한 369게임 [문제] 게임 규칙 : "3" "6" "9"가 들어가 있는 수를 말하지 않는대신, 박수를 친다. 이 때, 박수는 해당 숫자가 들어간 개수만큼 쳐야 한다. 예를 들어 숫자 35의 경우 박수 한 번, 숫자 36의 경우 박수를 두번 쳐야 한다. 입력으로 정수 N 이 주어졌을 때, 1~N 까지의 숫자를 게임 규칙에 맞게 출력하는 프로그램을 작성하라. 박수를 치는 부분은 숫자 대신, 박수 횟수에 맞게 “-“ 를 출력한다. 여기서 주의해야 할 것은 박수 한 번 칠 때는 - 이며, 박수를 두 번 칠 때는 - - 가 아닌 -- 이다. [풀이 방법] 2자리 수 이상부터는 십의 자리와 일의 자리에서 3/ 6/ 9가 있는지 판단 해야하기 때문에 십의 자리와 일의자리를 구분합니다. (a= i / 10 , b = i % 10)..