paizaラーニングレベルアップ問題集の「要素の追加/挿入/削除」をやってみました。
問題
配列末尾への追加
末尾への要素の追加
要素の挿入
指定位置への要素の追加
要素の削除
指定要素の削除
問題
配列末尾への追加
- 配列は半角空白区切り(ヨコ入力)で与えられます
- 追加する要素は配列の前に与えられます
末尾への要素の追加
- 配列は改行区切り(タテ入力)で与えられます
- 追加する要素は配列の後に与えられます
だったらN+1個の要素を配列に受け取るでも
要素の挿入
- 配列は半角空白区切り(ヨコ入力)で与えられます
- 挿入する位置と要素は配列の前に与えられます
- 左から$M$番目に$K$を挿入します
指定位置への要素の追加
- 配列は改行区切り(タテ入力)で与えられます
- 挿入する位置と要素は配列の後に与えられます
- $A_n$の後に$B$を挿入します
要素の削除
- 配列は半角空白区切り(ヨコ入力)で与えられます
- 削除する要素番号は配列の前に与えられます
指定要素の削除
- 配列は改行区切り(タテ入力)で与えられます
- 削除する要素番号は配列の後に与えられます
C
配列末尾への追加
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
int *A = malloc(sizeof(int)*n);
if (!A) abort();
for (int i = 0; i < n; i++) scanf("%d", &A[i]);
A = realloc(A, sizeof(int)*(n+1));
if (!A) abort();
A[n] = m;
for (int i = 0; i < n+1; i++) printf("%d\n", A[i]);
free(A);
return 0;
}
末尾への要素の追加
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d", &n);
int *A = malloc(sizeof(int)*n);
if (!A) abort();
for (int i = 0; i < n; i++) scanf("%d", &A[i]);
int b;
scanf("%d", &b);
A = realloc(A, sizeof(int)*(n+1));
if (!A) abort();
A[n] = b;
for (int i = 0; i < n+1; i++) printf("%d\n", A[i]);
free(A);
return 0;
}
要素の挿入
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int n, m, k;
scanf("%d %d %d", &n, &m, &k);
m -= 1;
int *A = malloc(sizeof(int)*n);
if (!A) abort();
for (int i = 0; i < n; i++) scanf("%d", &A[i]);
A = realloc(A, sizeof(int)*(n+1));
if (!A) abort();
memmove(A+m+1, A+m, sizeof(int)*(n-m));
A[m] = k;
for (int i = 0; i < n+1; i++) printf("%d\n", A[i]);
free(A);
return 0;
}
指定位置への要素の追加
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int N;
scanf("%d", &N);
int *A = malloc(sizeof(int)*N);
if (!A) abort();
for (int i = 0; i < N; i++) scanf("%d", &A[i]);
int n, b;
scanf("%d %d", &n, &b);
A = realloc(A, sizeof(int)*(N+1));
if (!A) abort();
memmove(A+n+1, A+n, sizeof(int)*(N-n));
A[n] = b;
for (int i = 0; i < N+1; i++) printf("%d\n", A[i]);
free(A);
return 0;
}
要素の削除
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
m -= 1;
int *A = malloc(sizeof(int)*n);
if (!A) abort();
for (int i = 0; i < n; i++) scanf("%d", &A[i]);
memmove(A+m, A+m+1, sizeof(int)*(n-1-m));
A = realloc(A, sizeof(int)*(n-1));
if (!A) abort();
for (int i = 0; i < n-1; i++) printf("%d\n", A[i]);
free(A);
return 0;
}
指定要素の削除
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int N;
scanf("%d", &N);
int *A = malloc(sizeof(int)*N);
if (!A) abort();
for (int i = 0; i < N; i++) scanf("%d", &A[i]);
int n;
scanf("%d", &n);
n -= 1;
memmove(A+n, A+n+1, sizeof(int)*(N-1-n));
A = realloc(A, sizeof(int)*(N-1));
if (!A) abort();
for (int i = 0; i < N-1; i++) printf("%d\n", A[i]);
free(A);
return 0;
}
C++
配列末尾への追加
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> A(n);
for (int i = 0; i < n; i++) cin >> A[i];
A.push_back(m);
for (int a : A) cout << a << endl;
return 0;
}
末尾への要素の追加
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> A(n);
for (int i = 0; i < n; i++) cin >> A[i];
int b;
cin >> b;
A.push_back(b);
for (int a : A) cout << a << endl;
return 0;
}
要素の挿入
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m, k;
cin >> n >> m >> k;
m -= 1;
vector<int> A(n);
for (int i = 0; i < n; i++) cin >> A[i];
A.insert(A.begin()+m, k);
for (int a : A) cout << a << endl;
return 0;
}
指定位置への要素の追加
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> A(N);
for (int i = 0; i < N; i++) cin >> A[i];
int n, b;
cin >> n >> b;
A.insert(A.begin()+n, b);
for (int a : A) cout << a << endl;
return 0;
}
要素の削除
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
m -= 1;
vector<int> A(n);
for (int i = 0; i < n; i++) cin >> A[i];
A.erase(A.begin()+m);
for (int a : A) cout << a << endl;
return 0;
}
指定要素の削除
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> A(N);
for (int i = 0; i < N; i++) cin >> A[i];
int n;
cin >> n;
n -= 1;
A.erase(A.begin()+n);
for (int a : A) cout << a << endl;
return 0;
}
C#
配列末尾への追加
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
int[] nm = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
int m = nm[1];
List<int> A = new List<int>(Array.ConvertAll(Console.ReadLine().Split(), int.Parse));
A.Add(m);
foreach (int a in A) Console.WriteLine(a);
}
}
末尾への要素の追加
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int> A = Enumerable.Range(0, int.Parse(Console.ReadLine())).Select(_ => int.Parse(Console.ReadLine())).ToList();
A.Add(int.Parse(Console.ReadLine()));
foreach (int a in A) Console.WriteLine(a);
}
}
要素の挿入
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
int[] nmk = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
int m = nmk[1] - 1, k = nmk[2];
List<int> A = new List<int>(Array.ConvertAll(Console.ReadLine().Split(), int.Parse));
A.Insert(m, k);
foreach (int a in A) Console.WriteLine(a);
}
}
指定位置への要素の追加
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int> A = Enumerable.Range(0, int.Parse(Console.ReadLine())).Select(_ => int.Parse(Console.ReadLine())).ToList();
int[] nb = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
int n = nb[0], b = nb[1];
A.Insert(n, b);
foreach (int a in A) Console.WriteLine(a);
}
}
要素の削除
using System;
using System.Collections.Generic;
class Program
{
public static void Main()
{
int[] nm = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
int m = nm[1] - 1;
List<int> A = new List<int>(Array.ConvertAll(Console.ReadLine().Split(), int.Parse));
A.RemoveAt(m);
foreach (int a in A) Console.WriteLine(a);
}
}
指定要素の削除
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int> A = Enumerable.Range(0, int.Parse(Console.ReadLine())).Select(_ => int.Parse(Console.ReadLine())).ToList();
int n = int.Parse(Console.ReadLine()) - 1;
A.RemoveAt(n);
foreach (int a in A) Console.WriteLine(a);
}
}
Go
配列末尾への追加
package main
import "fmt"
func main() {
var n, m int
fmt.Scan(&n, &m)
A := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&A[i])
}
A = append(A, m)
for _, a := range(A) {
fmt.Println(a)
}
}
末尾への要素の追加
package main
import "fmt"
func main() {
var n int
fmt.Scan(&n)
A := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&A[i])
}
var b int
fmt.Scan(&b)
A = append(A, b)
for _, a := range(A) {
fmt.Println(a)
}
}
要素の挿入
package main
import "fmt"
func main() {
var n, m, k int
fmt.Scan(&n, &m, &k)
m -= 1
A := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&A[i])
}
A = append(A[:m], append([]int{k}, A[m:]...)...)
for _, a := range(A) {
fmt.Println(a)
}
}
指定位置への要素の追加
package main
import "fmt"
func main() {
var N int
fmt.Scan(&N)
A := make([]int, N)
for i := 0; i < N; i++ {
fmt.Scan(&A[i])
}
var n, b int
fmt.Scan(&n, &b)
A = append(A[:n], append([]int{b}, A[n:]...)...)
for _, a := range(A) {
fmt.Println(a)
}
}
要素の削除
package main
import "fmt"
func main() {
var n, m int
fmt.Scan(&n, &m)
m -= 1
A := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&A[i])
}
A = append(A[:m], A[m+1:]...)
for _, a := range(A) {
fmt.Println(a)
}
}
指定要素の削除
package main
import "fmt"
func main() {
var N int
fmt.Scan(&N)
A := make([]int, N)
for i := 0; i < N; i++ {
fmt.Scan(&A[i])
}
var n int
fmt.Scan(&n)
n -= 1
A = append(A[:n], A[n+1:]...)
for _, a := range(A) {
fmt.Println(a)
}
}
Java
配列末尾への追加
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
sc.nextLine();
List<Integer> A = new ArrayList<>(Arrays.asList(Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt) .boxed().toArray(Integer[]::new)));
sc.close();
A.add(m);
for (int a : A) System.out.println(a);
}
}
末尾への要素の追加
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> A = new ArrayList<>(Arrays.asList(IntStream.range(0, sc.nextInt()).map(__ -> sc.nextInt()).boxed().toArray(Integer[]::new)));
A.add(sc.nextInt());
sc.close();
for (int a : A) System.out.println(a);
}
}
要素の挿入
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt() - 1;
int k = sc.nextInt();
sc.nextLine();
List<Integer> A = new ArrayList<>(Arrays.asList(Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt) .boxed().toArray(Integer[]::new)));
sc.close();
A.add(m, k);
for (int a : A) System.out.println(a);
}
}
指定位置への要素の追加
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> A = new ArrayList<>(Arrays.asList(IntStream.range(0, sc.nextInt()).map(__ -> sc.nextInt()).boxed().toArray(Integer[]::new)));
A.add(sc.nextInt(), sc.nextInt());
sc.close();
for (int a : A) System.out.println(a);
}
}
要素の削除
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt() - 1;
sc.nextLine();
List<Integer> A = new ArrayList<>(Arrays.asList(Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt) .boxed().toArray(Integer[]::new)));
sc.close();
A.remove(m);
for (int a : A) System.out.println(a);
}
}
指定要素の削除
import java.util.*;
import java.util.stream.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> A = new ArrayList<>(Arrays.asList(IntStream.range(0, sc.nextInt()).map(__ -> sc.nextInt()).boxed().toArray(Integer[]::new)));
A.remove(sc.nextInt() - 1);
sc.close();
for (int a : A) System.out.println(a);
}
}
JavaScript
配列末尾への追加
const [[n, m], A] = require("fs").readFileSync("/dev/stdin", "utf8").trim().split('\n').map(s => s.split(' ').map(Number));
A.push(m);
A.forEach(a => console.log(a));
末尾への要素の追加
const lines = require("fs").readFileSync("/dev/stdin", "utf8").trim().split('\n');
const n = Number(lines.shift());
const m = Number(lines.pop());
const A = lines.map(Number);
A.push(m);
A.forEach(a => console.log(a));
要素の挿入
const [[n, m, k], A] = require("fs").readFileSync("/dev/stdin", "utf8").trim().split('\n').map(s => s.split(' ').map(Number));
A.splice(m-1, 0, k);
A.forEach(a => console.log(a));
指定位置への要素の追加
const lines = require("fs").readFileSync("/dev/stdin", "utf8").trim().split('\n');
const N = Number(lines.shift());
const [n, b] = lines.pop().split(' ').map(Number);
const A = lines.map(Number);
A.splice(n, 0, b);
A.forEach(a => console.log(a));
要素の削除
const [[n, m], A] = require("fs").readFileSync("/dev/stdin", "utf8").trim().split('\n').map(s => s.split(' ').map(Number));
A.splice(m-1, 1);
A.forEach(a => console.log(a));
指定要素の削除
const lines = require("fs").readFileSync("/dev/stdin", "utf8").trim().split('\n');
const N = Number(lines.shift());
const n = Number(lines.pop()) - 1;
const A = lines.map(Number);
A.splice(n, 1);
A.forEach(a => console.log(a));
Kotlin
配列末尾への追加
fun main() {
val (_, m) = readLine()!!.split(" ").map { it.toInt() }
val A = readLine()!!.split(" ").map { it.toInt() }.toMutableList()
A.add(m)
for (a in A) println(a)
}
末尾への要素の追加
fun main() {
val A = Array(readLine()!!.toInt()) { readLine()!!.toInt() }.toMutableList()
A.add(readLine()!!.toInt())
for (a in A) println(a)
}
要素の挿入
fun main() {
val (_, m, k) = readLine()!!.split(" ").map { it.toInt() }
val A = readLine()!!.split(" ").map { it.toInt() }.toMutableList()
A.add(m-1, k)
for (a in A) println(a)
}
指定位置への要素の追加
fun main() {
val A = Array(readLine()!!.toInt()) { readLine()!!.toInt() }.toMutableList()
val (n, b) = readLine()!!.split(" ").map { it.toInt() }
A.add(n, b)
for (a in A) println(a)
}
要素の削除
fun main() {
val (_, m) = readLine()!!.split(" ").map { it.toInt() }
val A = readLine()!!.split(" ").map { it.toInt() }.toMutableList()
A.removeAt(m-1)
for (a in A) println(a)
}
指定要素の削除
fun main() {
val A = Array(readLine()!!.toInt()) { readLine()!!.toInt() }.toMutableList()
A.removeAt(readLine()!!.toInt()-1)
for (a in A) println(a)
}
PHP
配列末尾への追加
<?php
[$n, $m] = array_map("intval", explode(' ', fgets(STDIN)));
$A = array_map("intval", explode(' ', fgets(STDIN)));
array_push($A, $m);
foreach ($A as $a) echo $a, PHP_EOL;
?>
末尾への要素の追加
<?php
$n = intval(fgets(STDIN));
$A = array_fill(0, $n, 0);
for ($i = 0; $i < $n; $i++) $A[$i] = intval(fgets(STDIN));
array_push($A, intval(fgets(STDIN)));
foreach ($A as $a) echo $a, PHP_EOL;
?>
要素の挿入
<?php
[$n, $m, $k] = array_map("intval", explode(' ', fgets(STDIN)));
$m -= 1;
$A = array_map("intval", explode(' ', fgets(STDIN)));
array_splice($A, $m, 0, [$k]);
foreach ($A as $a) echo $a, PHP_EOL;
?>
指定位置への要素の追加
<?php
$N = intval(fgets(STDIN));
$A = [];
for ($i = 0; $i < $N; $i++) $A[] = intval(fgets(STDIN));
[$n, $b] = array_map("intval", explode(' ', fgets(STDIN)));
array_splice($A, $n, 0, [$b]);
foreach ($A as $a) echo $a, PHP_EOL;
?>
要素の削除
<?php
[$n, $m] = array_map("intval", explode(' ', fgets(STDIN)));
$m -= 1;
$A = array_map("intval", explode(' ', fgets(STDIN)));
array_splice($A, $m, 1);
foreach ($A as $a) echo $a, PHP_EOL;
?>
指定要素の削除
<?php
$N = intval(fgets(STDIN));
$A = [];
for ($i = 0; $i < $N; $i++) $A[] = intval(fgets(STDIN));
array_splice($A, intval(fgets(STDIN))-1, 1);
foreach ($A as $a) echo $a, PHP_EOL;
?>
Perl
配列末尾への追加
my ($n, $m) = map { int($_) } split ' ', <STDIN>;
my @A = map { int($_) } split ' ', <STDIN>;
push @A, $m;
foreach $a (@A) {
print $a, $/;
}
末尾への要素の追加
my $n = int(<STDIN>);
my @A = (0) x $n;
for (my $i = 0; $i < $n; $i++) {
$A[$i] = int(<STDIN>);
}
push @A, int(<STDIN>);
foreach $a (@A) {
print $a, $/;
}
要素の挿入
my ($n, $m, $k) = map { int($_) } split ' ', <STDIN>;
$m -= 1;
my @A = map { int($_) } split ' ', <STDIN>;
splice @A, $m, 0, $k;
foreach $a (@A) {
print $a, $/;
}
指定位置への要素の追加
my $N = int(<STDIN>);
my @A;
for (1..$N) {
push @A, int(<STDIN>);
}
my ($n, $b) = map { int($_) } split ' ', <STDIN>;
splice @A, $n, 0, $b;
foreach $a (@A) {
print $a, $/;
}
要素の削除
my ($n, $m) = map { int($_) } split ' ', <STDIN>;
$m -= 1;
my @A = map { int($_) } split ' ', <STDIN>;
splice @A, $m, 1;
foreach $a (@A) {
print $a, $/;
}
指定要素の削除
my $N = int(<STDIN>);
my @A;
for (1..$N) {
push @A, int(<STDIN>);
}
splice @A, int(<STDIN>)-1, 1;
foreach $a (@A) {
print $a, $/;
}
Python3
配列末尾への追加
n, m = map(int, input().split())
A = list(map(int, input().split()))
A.append(m)
for a in A:
print(a)
末尾への要素の追加
A = [int(input()) for _ in range(int(input()))]
A.append(int(input()))
for a in A:
print(a)
要素の挿入
n, m, k = map(int, input().split())
m -= 1
A = list(map(int, input().split()))
A.insert(m, k)
for a in A:
print(a)
指定位置への要素の追加
A = [int(input()) for _ in range(int(input()))]
n, b = map(int, input().split())
A.insert(n, b)
for a in A:
print(a)
要素の削除
n, m = map(int, input().split())
m -= 1
A = list(map(int, input().split()))
del A[m]
for a in A:
print(a)
指定要素の削除
A = [int(input()) for _ in range(int(input()))]
A.pop(int(input())-1)
for a in A:
print(a)
pop
メソッドは削除した値を返却します。
Ruby
配列末尾への追加
n, m = gets.split.map(&:to_i)
A = gets.split.map(&:to_i)
A.push(m)
A.each do |a|
p a
end
末尾への要素の追加
A = gets.to_i.times.map { gets.to_i }
A << gets.to_i
A.each do |a|
p a
end
要素の挿入
n, m, k = gets.split.map(&:to_i)
m -= 1
A = gets.split.map(&:to_i)
A.insert(m, k)
A.each do |a|
p a
end
指定位置への要素の追加
A = gets.to_i.times.map { gets.to_i }
n, b = gets.split.map(&:to_i)
A.insert(n, b)
A.each do |a|
p a
end
要素の削除
n, m = gets.split.map(&:to_i)
m -= 1
A = gets.split.map(&:to_i)
A.delete_at(m)
A.each do |a|
p a
end
指定要素の削除
A = gets.to_i.times.map { gets.to_i }
A.delete_at(gets.to_i - 1)
A.each do |a|
p a
end
Scala
配列末尾への追加
import scala.io.StdIn._
object Main extends App{
val Array(n, m) = readLine().split(' ').map { _.toInt }
var A = readLine().split(' ').map { _.toInt }
A :+= m
for (a <- A) println(a)
}
末尾への要素の追加
import scala.io.StdIn._
object Main extends App{
var A = (0 until readInt()).map { _ => readInt() }
A :+= readInt()
for (a <- A) println(a)
}
要素の挿入
import scala.io.StdIn._
object Main extends App{
val Array(n, m, k) = readLine().split(' ').map { _.toInt }
var A = readLine().split(' ').map { _.toInt }.toBuffer
A.insert(m-1, k)
for (a <- A) println(a)
}
指定位置への要素の追加
import scala.io.StdIn._
object Main extends App{
val A = (0 until readInt()).map { _ => readInt() }.toBuffer
val Array(n, b) = readLine().split(' ').map { _.toInt }
A.insert(n, b)
for (a <- A) println(a)
}
要素の削除
import scala.io.StdIn._
object Main extends App{
val Array(n, m) = readLine().split(' ').map { _.toInt }
var A = readLine().split(' ').map { _.toInt }.toBuffer
A.remove(m-1)
for (a <- A) println(a)
}
指定要素の削除
import scala.io.StdIn._
object Main extends App{
val A = (0 until readInt()).map { _ => readInt() }.toBuffer
A.remove(readInt()-1)
for (a <- A) println(a)
}
Swift
配列末尾への追加
let nm = readLine()!.split(separator: " ").compactMap { Int($0) }
let m = nm[1]
var A = readLine()!.split(separator: " ").compactMap { Int($0) }
A.append(m)
for a in A {
print(a)
}
末尾への要素の追加
var A = (0..<Int(readLine()!)!).map { _ in Int(readLine()!)! }
A.append(Int(readLine()!)!)
for a in A {
print(a)
}
要素の挿入
let nmk = readLine()!.split(separator: " ").compactMap { Int($0) }
let (m, k) = (nmk[1]-1, nmk[2])
var A = readLine()!.split(separator: " ").compactMap { Int($0) }
A.insert(k, at: m)
for a in A {
print(a)
}
指定位置への要素の追加
var A = (0..<Int(readLine()!)!).map { _ in Int(readLine()!)! }
let nb = readLine()!.split(separator: " ").compactMap { Int($0) }
let (n, b) = (nb[0], nb[1])
A.insert(b, at: n)
for a in A {
print(a)
}
要素の削除
let nm = readLine()!.split(separator: " ").compactMap { Int($0) }
let m = nm[1] - 1
var A = readLine()!.split(separator: " ").compactMap { Int($0) }
A.remove(at: m)
for a in A {
print(a)
}
指定要素の削除
var A = (0..<Int(readLine()!)!).map { _ in Int(readLine()!)! }
A.remove(at: Int(readLine()!)!-1)
for a in A {
print(a)
}