신경망 레이어, 어텐션, 그리고 머신러닝의 대부분은 결국 행렬 곱셈으로 귀결됩니다. n × k 행렬 A와 k × m 행렬 B의 곱 C = A × B는 n × m 행렬이며, 각 원소는 A의 행과 B의 열의 내적입니다.
C[i][j] = A[i][0] × B[0][j] + A[i][1] × B[1][j] + … + A[i][k-1] × B[k-1][j]
matmul(a, b)를 구현하세요.
입력
a: n × k 행렬.
b: k × m 행렬 (행 수가 a의 열 수와 같음).
출력
n × m 곱 행렬을 반환하세요.
제약 조건
1 ≤ n, k, m ≤ 50
-100 ≤ 각 값 ≤ 100
예시
입력:
a = [
[1.0, 2.0],
[3.0, 4.0]
]
b = [
[5.0, 6.0],
[7.0, 8.0]
]
예상 출력:
[
[19.0, 22.0],
[43.0, 50.0]
]
설명
C[0][0] = 1×5 + 2×7 = 19, C[0][1] = 1×6 + 2×8 = 22, C[1][0] = 3×5 + 4×7 = 43, C[1][1] = 3×6 + 4×8 = 50.
입력:
a = [
[1.0, 0.0, 2.0]
]
b = [
[3.0],
[4.0],
[5.0]
]
예상 출력:
[
[13.0]
]
설명
1 × 3 행렬과 3 × 1 행렬을 곱하면 1 × 1 행렬이 됩니다: 1×3 + 0×4 + 2×5 = 13.
참고 자료
-
예시 1 미실행입력:
a = [ [1.0, 2.0], [3.0, 4.0] ] b = [ [5.0, 6.0], [7.0, 8.0] ]예상 출력:[ [19.0, 22.0], [43.0, 50.0] ]내 출력 -
예시 2 미실행입력:
a = [ [1.0, 0.0, 2.0] ] b = [ [3.0], [4.0], [5.0] ]예상 출력:[ [13.0] ]내 출력
제출 시 4개의 숨겨진 테스트도 실행됩니다. 코드가 하나라도 실패하면 그 테스트를 볼 수 있습니다. 챌린지를 해결하면 모두 볼 수 있습니다.
Online Java Compiler
Write, compile, run, and debug Java code online in a full-featured browser IDE. Work with multiple files, save your workspace, and share or collaborate in real time - no setup required.
☕ 이 Java 온라인 실행기 소개
CodeUtility Java Executor는 브라우저에서 바로 Java 프로그램을 작성하고 실행할 수 있게 해줍니다 - 설치, JDK 설정, IDE가 필요 없습니다. 실제 Java 런타임 버전 8, 11, 17, 21, 그리고 최신을 지원하는 안전한 샌드박스에서 동작합니다.
이 도구는 실제 javac 컴파일러와 Java 런타임 환경을 사용해 클라우드에서 코드를 컴파일하고 실행하므로,
로컬과 동일한 방식으로 클래스, 메서드, 로직을 정확히 테스트할 수 있습니다.
객체지향 프로그래밍을 연습하든, 면접을 준비하든, 통합 전에 스니펫을 시험해 보든, CodeUtility Java Executor는 어떤 기기에서든 즉시 실제 Java 코드를 실행할 수 있는 빠르고 신뢰할 수 있는 환경을 제공합니다.
하나의 실행기에서 다중 파일 편집기, 격리된 실행 터미널, 런타임별 라이브러리, 영구 작업 공간, 공유 및 실시간 협업을 이용하세요.
이 실행기는 어떻게 사용하나요?
런타임을 선택하고 파일을 열거나 만든 다음 코드를 작성하고 실행을 선택하세요. 출력은 터미널에 표시되며, 로그인한 사용자는 작업 공간에 파일을 보관하고 라이브러리를 설치하며 공유를 통해 협업할 수 있습니다.
- 버전을 선택하고 현재 파일을 편집하거나 작업 공간의 다른 파일을 여세요.
- 코드를 실행하고 요청 시 터미널에 입력한 다음 저장된 실행 기록을 확인하세요.
- 작업에 둘 이상의 코드 조각이 필요하면 라이브러리, 작업 공간 도구, 공유 및 채팅을 사용하세요.
💡 위에서 바로 시도할 수 있는 Java 기초와 예제
1. 변수와 상수 선언
Java에서는 각 변수의 타입을 선언해야 합니다. 상수에는 final을 사용하세요.
int age = 30;
double pi = 3.14159;
char grade = 'A';
String name = "Alice";
boolean isActive = true;
// 상수
final int MAX_USERS = 100;
final String COMPANY = "CodeUtility";
2. 조건문 (if / switch)
제어 흐름에는 if, else if, switch를 사용하세요.
int x = 2;
if (x == 1) {
System.out.println("하나");
} else if (x == 2) {
System.out.println("둘");
} else {
System.out.println("그 외");
}
switch (x) {
case 1:
System.out.println("하나");
break;
case 2:
System.out.println("둘");
break;
default:
System.out.println("그 외");
}
3. 반복문
반복에는 for, while, do-while을 사용하세요.
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
int n = 3;
while (n > 0) {
System.out.println(n);
n--;
}
4. 배열
배열은 같은 타입의 고정 크기 시퀀스를 담습니다.
int[] numbers = {10, 20, 30};
System.out.println(numbers[1]);
5. ArrayList 다루기
가변 크기 리스트에는 ArrayList를 사용하세요.
import java.util.ArrayList;
ArrayList<Integer> nums = new ArrayList<>();
nums.add(1);
nums.add(2);
nums.add(3);
nums.remove(Integer.valueOf(2));
for (int num : nums) {
System.out.print(num + " ");
}
6. 콘솔 입력/출력
입력에는 Scanner, 출력에는 System.out을 사용하세요.
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("이름을 입력하세요: ");
String name = scanner.nextLine();
System.out.println("안녕하세요, " + name);
7. 함수
반환 타입과 매개변수를 지정해 메서드를 정의합니다.
public static int add(int a, int b) {
return a + b;
}
System.out.println(add(3, 4));
8. HashMap
키-값 저장에는 HashMap을 사용하세요.
import java.util.HashMap;
HashMap<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
System.out.println(ages.get("Alice"));
9. 예외 처리
런타임 예외 처리는 try와 catch를 사용하세요.
try {
throw new Exception("문제가 발생했습니다");
} catch (Exception e) {
System.out.println(e.getMessage());
}
10. 파일 I/O
파일 처리에는 java.nio.file의 Files와 Paths를 사용하세요.
import java.nio.file.*;
import java.io.IOException;
Files.writeString(Paths.get("file.txt"), "안녕, 파일");
String content = Files.readString(Paths.get("file.txt"));
System.out.println(content);
11. 문자열 조작
Java 문자열은 length(), substring(), contains() 같은 다양한 메서드를 지원합니다.
String text = "Hello World";
System.out.println(text.length());
System.out.println(text.substring(0, 5));
System.out.println(text.contains("World"));
12. 클래스와 객체
Java는 클래스와 인스턴스를 사용한 객체지향 프로그래밍을 지원합니다.
class Person {
String name;
Person(String name) {
this.name = name;
}
void greet() {
System.out.println("안녕, 나는 " + name);
}
}
Person p = new Person("Alice");
p.greet();